Heim >Backend-Entwicklung >PHP-Tutorial >Erstellen Sie Ruhemittel mit Laravel

Erstellen Sie Ruhemittel mit Laravel

William Shakespeare
William ShakespeareOriginal
2025-02-20 11:50:10517Durchsuche

Erstellen Sie Ruhemittel mit Laravel

In diesem Teil werden wir mit der REST -Schnittstelle beginnen. Es ist nicht sehr schwierig, eine REST -API auf Laravel zu erstellen. Wir müssen uns nur beachten, dass wir mit Emberjs zu tun haben und dass wir keinen neuen Adapter von Grund auf neu schreiben möchten. Wie üblich finden Sie den Quellcode für diesen Teil auf GitHub.

Key Takeaways

  • Verwenden Sie Ember.js Konventionen beim Erstellen von REST -APIs mit Laravel, um die Kompatibilität zu gewährleisten und den Entwicklungsprozess zu optimieren.
  • Erstellen Sie Ressourcencontroller in Laravel mit dem Artisan Command-Line Tool, um erholsame Ressourcen effizient zu verwalten, ohne CRUD-Operationen manuell zu definieren.
  • organisieren Routen effektiv, indem sie sie unter einem bestimmten Namespace in Laravel gruppieren, wodurch die API -Struktur und -Angiebfräger verbessert werden.
  • Implementieren Sie Fehlerbehebung und Antwortformatierung in Controllern, um das Abrufen von Daten zu verwalten und robuste API -Endpunkte zu gewährleisten.
  • Nutzen Sie die eloquenten und API-Ressourcenklassen von Laravel, um Modelldaten in JSON-Antworten umzuwandeln, und erleichtern eine einfache Integration in Front-End-Frameworks wie Ember.js.

Wo fängt ich an?

Das ist eine schwierige Frage. Ember hat einen eigenen Workflow und eine eigene Logik. Wenn wir anfangen, unsere Ruhe mit dieser Logik zu schreiben, werden wir einige Zeit sparen, wir haben eine schöne Architektur und etwas wiederverwendbares. Ich denke, Ember hat eine gute Wahl mit ihrer Ruhearchitektur getroffen. Schauen Sie sich an, wie Ember die Daten erwartet.

Nehmen wir an, wir möchten einen Benutzer abrufen. Ember erwartet so etwas:

{
      "user": {
        "firstName": "firstName",
        "lastName": "lastName"
      }
    }

Wenn wir eine Liste von Benutzern abrufen möchten, würde Ember einen JSON so erwarten:

{
      "users": 
      [
          {
            "firstName": "firstPersonsName",
            "lastName": "lastname"
          },
          {
            "firstName": "secondPersonName",
            "lastName": "lastName"
          }
      ]
    }

Der erste erfordert "Benutzer", aber der zweite benötigt "Benutzer". Der zweite ist Plural. Ember hat auch einige Regeln dafür eingereicht. Wenn Sie den Plural selbst nicht angeben, verwenden Sie:

Ember.Inflector.inflector.irregular('formula', 'formulae');

Emberjs wird eine Annahme treffen und „Formeln“ anfordern. Manchmal ist es schön, dass das Framework selbst solche Dinge bereitstellt, aber andererseits können Dinge außer Kontrolle geraten, wenn Sie diese Details vergessen.

Bevor Sie sich tiefer mit Ember wagen, warnt eine Warnung: Ember ist schwierig und mächtig. Nehmen Sie sich Zeit, um zu lernen, wie es funktioniert.

Wenn wir die Dinge ein wenig komplizieren und einige Beziehungen zwischen den Objekten einstellen, sagen wir beispielsweise, dass der Benutzer einige Fotos hat. Wie würden wir das ausgeben?

{
      "user": {
        "id": 1,
        "name": "firstName",
        "lastname": "lastname,
        "photos": [1, 2, 3]
      },
    
      "photos": 
      [
          {
            "id": 1,
            "title": "Lorem Ipsum"
          },
          {
            "id": 2,
            "title": "Lorem Ipsum"
          }
      ]
    }

Dies ist eine Eins-zu-Viele-Beziehung. Wenn wir einen Benutzer anfordern, werden auch seine Fotos gezogen. Wir haben bereits einige Beziehungen in Laravel aufgebaut. Sie können sie verwenden, wenn Sie möchten, und diese Beziehungen auch zu Ember konsumieren.

Ich habe mit Ember angefangen, um zu sehen, wie dieses Framework die Daten haben will. Es ist einfacher, wenn Sie wissen, wie Sie die Struktur aufbauen. Die Validierung und das Erhalten der Daten aus der Datenbank sind einfach, aber das Erstellen einer soliden und einer intelligenten Schnittstelle, das ist der schwierige Teil.

Vorbereitung auf den Rest

Wenn Sie etwas entwickeln, kann ein Modell sehr hilfreich sein. Selbst wenn Sie ein Guru -Programmierer sind und es hassen, mit Photoshop oder GIMP umzugehen, gibt es gute Werkzeuge für Prototypen. Ich habe Balsamiq verwendet und mein Prototyp auf der Titelseite war Folgendes:

Erstellen Sie Ruhemittel mit Laravel

Beginnen wir mit dem Bau. Open /app/views/index.php. Dies dient als unsere einseitige App. Wir haben diese Datei im ersten Teil dieser Serie erstellt.

{
      "user": {
        "firstName": "firstName",
        "lastName": "lastName"
      }
    }

Erlauben Sie mir, dies zu erklären. Das NAV -Tag ist für die Navigation verantwortlich. Das UL-Tag mit der Klassentitelfläche ist Text, das als Logo verwendet wird, das mit der ersten Ebene der Anwendung verknüpft wird. Ich habe auch eine Dropdown-Liste mit einer Liste von Kategorien hinzugefügt. Besuchen Sie die Foundation 5 -Dokumente, wenn Sie mehr erfahren möchten. Meistens kopieren/Einfügen von Vorgängen. Machen Sie sich also keine Sorgen um diesen Teil.

Außerdem habe ich das Grid -System der Foundation für den Inhaltsbereich verwendet. Dies wäre mit allen Informationen gefüllt und wird beim Navigieren geändert. Alle internen Updates werden von Ember behandelt. Wir werden hier nur 3 Vorlagen bauen. Eine für Benutzer, eine für ein einzelnes Foto und eine für die Zielseite.

Haben Sie bemerkt, dass sich der gesamte Code in einem Skript -Tag befindet? Ember verwendet Lenker als Vorlagensprache. Die Art der Text/X-Handleute ist eine spezielle Art von Skript. Wenn Sie Ember und Lenker für eine Weile verwendet haben, haben Sie wahrscheinlich Vorlagennamen verwendet. Ich habe sie in diesem Fall nicht an, da diese Vorlage als Container für die gesamte Anwendung verwendet wird. Wenn Sie keinen Namen angeben, verwendet Ember ihn als Anwendungsvorlage.

Die Ressourcencontroller

Als ich diese sehr einfache App entwickelte, stellte ich fest, dass Ressourcencontroller bei der Entwicklung von REST -APIs nützlich sind. Das ist der Punkt der Restarchitektur - alles ist eine Ressource. Alle Ressourcen können ein HTTP -Verb angewendet haben: Get, post, Löschen, Put (Update). Nicht alle Verben sind erforderlich.

{
      "users": 
      [
          {
            "firstName": "firstPersonsName",
            "lastName": "lastname"
          },
          {
            "firstName": "secondPersonName",
            "lastName": "lastName"
          }
      ]
    }

So erstellen wir einen Ressourcencontroller über Handwerker. Die Option -außer diesen beiden Methoden aus diesem Controller. Wir brauchen die Methoden erstellen und bearbeiten nicht. Die Methode für Erstellen befasst sich mit der grafischen Schnittstelle des Erstellens dieser Ressource. Während wir eine einseitige App erstellen, ist es nicht ratsam, eine Ansicht außerhalb von Ember zu erstellen.

Erstellen Sie einen anderen Ressourcencontroller für Kategorien. Wie Sie sehen können, sind in diesem Controller nur Show- und Indexmethoden verfügbar. Ich denke, dass es genug ist, eine einzelne Kategorie zu zeigen und alle Kategorien abzurufen.

{
      "user": {
        "firstName": "firstName",
        "lastName": "lastName"
      }
    }

Ein weiterer Controller ist der Imagebottencontroller. Warum Images -Controller, wenn wir bereits einen haben? Weil wir einen Endpunkt brauchen, um die Bilder zu dienen. Dropbox hält unsere Bilder, aber wir können nicht von außen auf sie zugreifen. Wenn Sie einen Ordner öffentlich machen möchten, müssen Sie bezahlen. Das ist der erste Grund. Der zweite Grund ist, dass ich nicht möchte, dass jedes Bild öffentlich ist. Kurz gesagt, dieser Controller schnappt sich das Bild von Dropbox und serviert es dem Client.

{
      "users": 
      [
          {
            "firstName": "firstPersonsName",
            "lastName": "lastname"
          },
          {
            "firstName": "secondPersonName",
            "lastName": "lastName"
          }
      ]
    }

Und das letzte But nicht zuletzt ist der UserController:

Ember.Inflector.inflector.irregular('formula', 'formulae');

Die Route

Jetzt, da wir die Controller haben, müssen wir diese Controller mit ihren zugehörigen Routen verknüpfen. Lassen Sie uns /app/routes.php aktualisieren. Gruppen Sie sie zunächst in einem URL -Namespace unter Verwendung von Route :: Group.

{
      "user": {
        "id": 1,
        "name": "firstName",
        "lastname": "lastname,
        "photos": [1, 2, 3]
      },
    
      "photos": 
      [
          {
            "id": 1,
            "title": "Lorem Ipsum"
          },
          {
            "id": 2,
            "title": "Lorem Ipsum"
          }
      ]
    }

Hier haben wir ein Präfix angegeben, den Namespace. Alles, was sich in dieser Gruppe befindet, kann so zugegriffen werden:

<script type="text/x-handlebars">
    
        <!-- The navigation top-bar -->
        <nav  data-topbar>

            <ul >
                <li >
                    <h1><a href="#">Photo Upload</a></h1>
                </li>
            </ul>

            <section >

                <!-- Left Nav Section -->
                <ul >
                    <li >
                        <a href="#">Categories</a>
                        <ul >
                            <li><a href="#">Category1</a></li>
                            <li><a href="#">Category2</a></li>
                            <li><a href="#">Category3</a></li>
                            <li><a href="#">Category4</a></li>
                        </ul>
                    </li>
                </ul>

            </section>

            <div ></div>
            
        </nav><!-- END Navigation -->
        
        <!-- Content -->
        <div style="margin-top: 50px;">
            <!-- The content will be here -->
        </div><!-- END Content -->

    </script>

Außerdem können wir Filter in dieser Gruppe angeben. Sie können beispielsweise einen Auth :: on -basic ('Benutzernamen') filtern oder einen erstellen und in dieser Gruppe hinzufügen. Sie können auch andere Authentifizierungen verwenden.

Fügen Sie drei Controller in dieser Gruppe hinzu. Photocontroller, UserController und CategoryController.

php artisan controller:make PhotoController --except=create,edit

Fügen Sie den ImagesController außerhalb dieser Gruppe hinzu. Ich glaube nicht, dass dieser Controller einen Namespace benötigt - Bilder sind Bilder und es macht keinen Sinn, ihnen einen Namespace zu geben.

php artisan controller:make CategoryController --only=show,index
am Ende sollte die Datei /app/routes.php so aussehen:

php artisan controller:make ImagesController --only=show
Beachten Sie, dass die Ressourcennamen aufgrund der Anforderung von Ember plural sind.

Füllen Sie diese Controller

Jetzt können wir anfangen, etwas zu bauen. Ich werde hier nicht alles über Ruhe abdecken, weil es sehr schwierig ist, alle Dinge zu erklären - um mehr Tiefe herauszufinden, sehen Sie sich diese Serie. Beginnen wir mit dem Fotokontroller.

Die Index () -Methode sollte die neuesten Fotos aus der Datenbank zurückgeben. Hier könnten wir etwas Pagination machen, aber ich möchte nicht, dass die Dinge zu komplex werden. Wenn es genügend Interesse an den Kommentaren gibt, aktualisieren wir diese Anwendung in einem zukünftigen Artikel.

php artisan controller:make UserController --only=show,index
Lassen Sie mich das erklären. Ich habe alles in einen Versuch eingefügt, fangen und schließlich blockieren. Wenn etwas schief geht, geben Sie einen anderen JSON mit einem Statuscode zurück.

<span>Route<span>::</span>group(array('prefix' => 'api/v1'), function()
</span>    <span>{
</span>        
    
    <span>});</span>
Dies greift 9 Fotos aus der Datenbank ab. Nehmen Sie dann jedes Foto auf und zeigen Sie es in einem formatierten Array an, das später in das JSON -Format konvertiert wird.

Wenn alles gut läuft oder wenn eine Ausnahme nicht von eloquent ausgelöst wird, zeigt dies die richtige Ausgabe an. Wenn Sie einen bestimmten Statuscode anzeigen möchten, fangen Sie jede Ausnahme an, die von eloquent geworfen werden kann, und zeigen Sie den richtigen Statuscode an.

füllen wir jetzt die modal methode () aus. Auch hier möchten wir alle Informationen über das Foto mit der angegebenen ID abrufen.

example.com/api/v1
Vergessen Sie beim Erstellen Ihrer eigenen App nicht, der Benutzereingabe eine Validierung hinzuzufügen.

Die Logik für den UserController ist fast gleich. Dieses Mal werden wir das Benutzermodell anfordern.

{
      "user": {
        "firstName": "firstName",
        "lastName": "lastName"
      }
    }

Alles ist fast identisch, nur das Modell und die Felder ändern sich. Die Ausgabe JSON. Die Show -Methode sieht so aus:

{
      "users": 
      [
          {
            "firstName": "firstPersonsName",
            "lastName": "lastname"
          },
          {
            "firstName": "secondPersonName",
            "lastName": "lastName"
          }
      ]
    }

Diese Funktion ruft einen Benutzer mit der angegebenen ID ab.

Der letzte Controller, mit dem wir es zu tun haben, ist der Imagebotschaftskontroller. Die Logik ist so einfach wie das Abschneiden der Bilder aus dem Dateisystem und dient ihnen. Es ist einfach, wenn Sie Dateien speichern und mit dem lokalen Dateisystem oder dem Server -Dateisystem abrufen. Leider können Sie Dateien nicht vor Heroku speichern, sodass Sie Dropbox verwenden und diese Dateien aus diesem Endpunkt servieren.

Importieren Sie den Dropbox -Client und den Flysystem -Adapter. Wenn unsere Umgebung lokal ist, werden wir Flysystems mit dem lokalen Adapter verwenden. Wenn die Umgebung Produktion ist, verwenden Sie den Dropbox -Adapter. Weisen Sie die Flysystem -Klasse in diesem Controller einer privaten Variablen zu.

.
Ember.Inflector.inflector.irregular('formula', 'formulae');

Die Show -Methode dient dieser Datei und die Zerstörungsmethode löscht diese Datei aus dem Dateisystem. Durch die Verwendung dieser Bibliothek setzen wir eine Abstraktionsniveau in unsere App ein.
{
      "user": {
        "id": 1,
        "name": "firstName",
        "lastname": "lastname,
        "photos": [1, 2, 3]
      },
    
      "photos": 
      [
          {
            "id": 1,
            "title": "Lorem Ipsum"
          },
          {
            "id": 2,
            "title": "Lorem Ipsum"
          }
      ]
    }

Die Funktion "Destroy () ist sehr einfach. Wählen Sie diese Datei einfach mit der Methode Löschen und übertragen Sie den Namen der zu gelöschten Datei. Wenn die Datei nicht gefunden wird, geben Sie eine 404 zurück
<script type="text/x-handlebars">
    
        <!-- The navigation top-bar -->
        <nav  data-topbar>

            <ul >
                <li >
                    <h1><a href="#">Photo Upload</a></h1>
                </li>
            </ul>

            <section >

                <!-- Left Nav Section -->
                <ul >
                    <li >
                        <a href="#">Categories</a>
                        <ul >
                            <li><a href="#">Category1</a></li>
                            <li><a href="#">Category2</a></li>
                            <li><a href="#">Category3</a></li>
                            <li><a href="#">Category4</a></li>
                        </ul>
                    </li>
                </ul>

            </section>

            <div ></div>
            
        </nav><!-- END Navigation -->
        
        <!-- Content -->
        <div style="margin-top: 50px;">
            <!-- The content will be here -->
        </div><!-- END Content -->

    </script>

Am Ende sollte der ImageController ungefähr so ​​aussehen:

php artisan controller:make PhotoController --except=create,edit

Das Format, das wir serviert haben, ist HTML. Ok, das ist ein bisschen komisch. Wir wollten Bilder servieren, nicht HTML. Dies ist jedoch kein Problem, da der Browser nach dem Dateiformat sucht und erkennt, wie diese Datei verwendet wird.

Versuchen Sie, den CategoryController zu erstellen. Ich habe es als Übung für Sie ausgelassen.

Testen Sie die API

Ich muss zugeben, ich bin in Phpstorming verliebt und zum Testen der Rest -APIs verwende ich ein Tool namens Rast Client. Es handelt sich um eine grafische Schnittstelle, die die Tests vereinfacht. Sie können Curl auch aus dem Terminal verwenden, wenn Sie möchten. Lassen Sie uns einige Tests durchführen:

php artisan controller:make CategoryController --only=show,index

Und das ist zurückgegeben:

Erstellen Sie Ruhemittel mit Laravel

Mit dem REST -Client von PhpStorm erhalte ich das gleiche Ergebnis in JSON.

Erstellen Sie Ruhemittel mit Laravel

Und wenn ich die Ergebnisse in einem besseren Format sehen möchte, kann ich einfach das JS -Symbol auf der linken Seite des Werkzeugs drücken, und der Rest -Client gibt mir eine schönere Darstellung.

Erstellen Sie Ruhemittel mit Laravel

Sie können auch andere Verben wie Löschen und Post testen. Testen Sie so viel wie möglich. Es gibt andere Kunden, die Sie zum Testen verwenden können: Restkonsole und Postbote sind zwei davon. Der erste ist nur für Chrome erhältlich, und der zweite, Postman, ist sowohl für Chrome als auch für Firefox erhältlich. Postman scheint einfacher und benutzerfreundlicher zu sein. Probieren Sie es aus.

Schlussfolgerung

laravel vereinfacht unsere Arbeit zum Aufbau von Rast -APIs mit Ressourcencontrollern. Wir haben gesehen, wie die Schnittstelle durch die Verwendung von Ember -Konventionen erstellt werden sollte. Ember hat eine gute Schnittstelle ausgewählt. Indem Sie sich an dieser Logik festhalten, können Sie Ihren Code problemlos auf anderen Plattformen wiederverwenden.

In diesem Teil habe ich mich mehr auf die Konzepte konzentriert und nicht zu viel Codierung gemacht. Das Füllen aller Methoden und das Hinzufügen der Validierung hätte diesen Beitrag unnötig erweitert, wenn er bereits lang genug und in einer langen Serie ist. Bei der Entwicklung sollten Sie immer Eingaben validieren. Vergessen Sie es nicht und testen Sie, testen, testen. Tests sollten Ihr bester Freund sein.

In der letzten Ausgabe dieser Serie werden wir alles in eine voll funktionsfähige Live -Anwendung zusammenfügen.

häufig gestellte Fragen zum Erstellen von Ruhemöglichkeiten mit Laravel

Wie erstelle ich einen Ressourcencontroller in Laravel? Der Befehl ist PHP Artisan Make: Controller Controllername -Ressource. Ersetzen Sie "Controllername" durch den Namen, den Sie Ihrem Controller geben möchten. Dieser Befehl erstellt einen Controller mit Methoden für alle notwendigen CRUD -Operationen. Denken Sie daran, der Name des Controllers sollte in singulärer Form sein und ein gültiger PHP -Klassenname sein. Eloquent ORM -Modelle und Modellsammlungen in das JSON -Format. Dies ist besonders nützlich, wenn Sie APIs erstellen, da Sie die genaue Form und das Format der Daten steuern können, die Sie in Ihre API -Antworten senden möchten. Es bietet eine konsistente und überschaubare Möglichkeit, die Datenausgabe zu steuern.

Wie verwende ich Laravel -API -Ressourcen? Dies kann mit dem Artisan Command Php Artisan Make: Ressourcenressourcename erfolgen. Sobald die Ressourcenklasse erstellt wurde, können Sie die Transformation in der Toarrray -Methode Ihrer Ressource definieren. Um eine Ressource aus einer Route zurückzugeben, geben Sie einfach eine neue Instanz der Ressourcenklasse zurück und geben die Daten ein, die Sie verwandeln möchten. 🎜> Sie können die von einer Laravel -Ressource zurückgegebenen Daten anpassen, indem Sie die TOARRAY -Methode in Ihrer Ressourcenklasse ändern. In der ToArray -Methode sind die beredten Modellattribute Ihren API -Antwortattributen zugeordnet. Sie können Attribute nach Bedarf hinzufügen, entfernen oder ändern.

Was ist der Unterschied zwischen einer Ressource und einer Sammlung in Laravel? von Ressourcen. Eine Ressourcensammlung wird verwendet, um ein Array oder eine Sammlung von Modellen in JSON zu verwandeln.

Wie erstelle ich eine Ressourcensammlung in Laravel? Artisan Command PHP Artisan Make: Ressourcenressourcenhändler -Sammlung. Dies erstellt eine Ressourcensammlungsklasse, in der Sie die Transformation für die Sammlung definieren können. In Laravel geben Sie einfach eine neue Instanz der Ressourcensammelsklasse zurück und geben Sie die Sammlung von Modellen ein, die Sie transformieren möchten.

Ja, Sie können eine Ressourcenantwort in Laravel Meta -Daten hinzufügen. Dies kann durch Definieren einer mit Methode auf der Ressource definierten Methode erfolgen. Die With -Methode sollte ein Array von Meta -Daten zurückgeben, die Sie in die Antwort einbeziehen möchten. Fügen Sie der Ressourcenantwort bedingt Attribute hinzu. Die WO -Methode akzeptiert zwei Argumente: die Bedingung, die feststellt, ob das Attribut enthalten sein sollte, und der Wert des Attributs, wenn die Bedingung wahr ist. Ja, Laravel-Ressourcen funktionieren perfekt mit Laravels eingebauter Pagination. Wenn Sie eine Laravel -eloquent -Abfrage paginieren, gibt Laravel automatisch eine JSON -Antwort zurück, die die paginierten Ergebnisse zusammen mit Paginierungsverbindungen enthält. Wenn Sie die paginierte Antwort anpassen möchten, können Sie eine Ressourcensammlung verwenden.

Das obige ist der detaillierte Inhalt vonErstellen Sie Ruhemittel mit Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn