Schnellstart-Tutorial zum Erstellen einer API im RESTful-Stil mit dem Yii2-Framework

高洛峰
Freigeben: 2023-03-04 17:28:01
Original
1167 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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'],
],
],
],
Nach dem Login kopieren

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');
Nach dem Login kopieren

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';
}
}
Nach dem Login kopieren

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';
}
Nach dem Login kopieren

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],
],
Nach dem Login kopieren

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!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!