Lassen Sie mich zunächst sagen, was REST ist
erholsam
RESTs vollständiger Name ist Representational State Transfer, was auf Chinesisch repräsentativen Zustand (Anmerkung des Herausgebers: normalerweise als Repräsentation übersetzt) bedeutet überweisen . Es erschien erstmals im Jahr 2000 in der Doktorarbeit von Roy Fielding, einem der Hauptautoren der HTTP-Spezifikation. Er erwähnte in dem Artikel: „Der Zweck des Schreibens dieses Artikels besteht darin, den Architekturentwurf netzwerkbasierter Anwendungssoftware unter der Voraussetzung der Einhaltung der Architekturprinzipien zu verstehen und zu bewerten und eine Architektur mit starken Funktionen, guter Leistung usw. zu erhalten „Architektur ist für die Kommunikation geeignet.“ „Wenn eine Architektur den Einschränkungen und Prinzipien von REST entspricht, nennen wir sie eine RESTful-Architektur.“
REST selbst erstellt keine neuen Technologien, Komponenten oder Dienste, und die Idee hinter RESTful besteht darin, die vorhandenen Funktionen und Fähigkeiten des Webs zu nutzen und einige der vorhandenen Richtlinien und Standards für Webstandards besser zu nutzen Einschränkungen. Obwohl REST selbst stark von der Web-Technologie beeinflusst ist, ist der REST-Architekturstil theoretisch nicht an HTTP gebunden, aber derzeit ist HTTP die einzige mit REST verbundene Instanz. Das REST, das wir hier beschreiben, ist also auch REST, das über HTTP implementiert wird.
Ich habe vor nicht allzu langer Zeit an einem Projekt gearbeitet, bei dem ich das Yii2-Framework verwendet habe, um eine Reihe von APIs im RESTful-Stil zu schreiben. Ich habe mir den „Yii 2.0 Authoritative Guide“ angesehen und festgestellt, dass er relativ kurz geschrieben ist. Deshalb schreibe ich hier einen Tutorial-Beitrag, in der Hoffnung, Freunden, die neu im Yii2-Framework RESTful sind, einen schnellen Einstieg zu ermöglichen.
1. Verzeichnisstruktur
Um eine einfache RESTful-API zu implementieren, werden nur drei Dateien benötigt. Das Verzeichnis lautet wie folgt:
frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php
2. URL-Regeln konfigurieren
1 Ändern Sie die Umschreiberegeln des Servers und zeigen Sie alle an URLs zur Indizierung. PHP zur Unterstützung des /books/1-Formats.
Wenn es sich um einen Apache-Server handelt, erstellen Sie eine neue .htaccess-Datei im Verzeichnis frontend/web/. Der Inhalt der Datei lautet wie folgt:
RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php
Wenn es sich um einen Nginx-Server handelt, ändern Sie nginx/conf/nginx.conf und legen Sie es fest „Standort / des aktuellen „Servers{}“ {}“, fügen Sie den folgenden rot markierten Inhalt hinzu:
location / { try_files $uri $uri/ /index.php$is_args$args; }
2. Ändern Sie das Frontend/die Konfiguration /main.php-Datei und fügen Sie der Buchcontroller-Regel eine URL hinzu. Auf diese Weise kann über hübsche URLs und aussagekräftige http-Verben auf Daten zugegriffen und diese manipuliert werden. Die Konfiguration ist wie folgt:
'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book'], ], ], ],
3. Erstellen Sie ein Modell
1. Der Inhalt der Buchtabelle lautet wie folgt:
-- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` char(50) NOT NULL DEFAULT '', `num` tinyint(3) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of book -- ---------------------------- INSERT INTO `book` VALUES ('1', 'toefl', '10'); INSERT INTO `book` VALUES ('2', 'ielts', '20'); INSERT INTO `book` VALUES ('3', 'sat', '30'); INSERT INTO `book` VALUES ('4', 'gre', '40'); INSERT INTO `book` VALUES ('5', 'gmat', '50');
2. Erstellen Sie eine neue Book.php im Verzeichnis frontend/models/. Der Inhalt der Datei ist wie folgt:
namespace frontend\models; use yii\db\ActiveRecord; class Book extends ActiveRecord { public static function tableName() { return 'book'; } }
4. Erstellen Sie einen Controller
Erstellen Sie im Frontend eine neue BookController.php /controllers/ Verzeichnis. Die Controller-Klasse erstreckt sich von yiirestActiveController. Durch die Angabe von yiirestActiveController::modelClass als frontendmodelsBook weiß der Controller, welches Modell er zum Abrufen und Verarbeiten von Daten verwenden muss. Der Inhalt der Datei lautet wie folgt:
namespace frontend\controllers; use yii\rest\ActiveController; class BookController extends ActiveController { public $modelClass = 'frontend\models\Book'; }
5. Testen
An diesem Punkt haben wir die Erstellung von RESTful abgeschlossen für den Zugriff auf die Benutzerdatenstil-API. Die erstellte API umfasst:
GET /books: Alle Bücher auflisten
HEAD /books: Zusammenfassungsinformationen der Buchliste anzeigen
POST /books: 1 neues Buch hinzufügen
GET /books/ 1: Detaillierte Informationen zur Buch-ID=1 zurückgeben
HEAD /books/1: Zusammenfassende Informationen zur Buch-ID=1 anzeigen
PATCH /books/1 und PUT /books/1: Buch-ID=1-Informationen aktualisieren
DELETE /books/1: Informationen über Buch-ID=1 löschen
OPTIONS /books: Unterstützung für Verben über end/books anzeigen
OPTIONS /books/1: Unterstützung für end/books/1 anzeigen Das Verb
kann auf die API zugreifen, indem Sie die URL http://{Domänenname des Frontends}/books in einen Webbrowser eingeben oder einige Browser-Plug-Ins verwenden, um bestimmte Header-Anfragen zu senden, z. B. RestClient von Firefox oder Chrome Advanced Rest Client , Postbote usw.
6. Anweisungen
1.Yii pluralisiert am Ende automatisch den Namen des verwendeten Controllers. Dies liegt daran, dass yiirestUrlRule Controller für die von ihnen verwendeten Endpunkte automatisch pluralisieren kann. Dieses Verhalten kann deaktiviert werden, indem yiirestUrlRule::pluralize auf false gesetzt wird:
'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book', 'pluralize' => false], ],
2. Sie können die Felder und Erweiterungsparameter verwenden, um anzugeben, welche Felder verwendet werden sollen in die Ergebnisse einbezogen werden Inside. Beispiel: Die URL http://{Frontend-Domänenname}/books?fields=name,num gibt nur die Felder „name“ und „num“ zurück.
Das obige ist das vom Herausgeber vorgestellte Schnellstart-Tutorial zum Erstellen einer RESTful-API. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht pünktlich zu Ihnen. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!
Weitere Artikel zum Schnellstart-Tutorial zur Erstellung einer RESTful-API im Yii2-Framework finden Sie auf der chinesischen PHP-Website!