Maison >développement back-end >tutoriel php >Tutoriel de démarrage rapide pour créer une API de style RESTful avec le framework Yii2

Tutoriel de démarrage rapide pour créer une API de style RESTful avec le framework Yii2

高洛峰
高洛峰original
2017-01-09 11:18:061196parcourir

Laissez-moi d'abord vous dire ce qu'est REST

reposant

Le nom complet de REST est Representational State Transfer, qui en chinois signifie état de représentation (NDLR : généralement traduit par représentation) transfert . Il est apparu pour la première fois en 2000 dans la thèse de doctorat de Roy Fielding, l'un des principaux auteurs de la spécification HTTP. Il a mentionné dans l'article : « Le but de la rédaction de cet article est de comprendre et d'évaluer la conception architecturale des logiciels d'application basés sur le réseau en partant du principe du respect des principes architecturaux, et d'obtenir une architecture avec des fonctions solides, de bonnes performances et adapté à la communication. L'architecture REST fait référence à un ensemble de contraintes et de principes architecturaux. "Si une architecture est conforme aux contraintes et aux principes de REST, nous l'appelons une architecture RESTful.

REST lui-même ne crée pas de nouvelles technologies, composants ou services, et l'idée derrière RESTful est d'utiliser les fonctionnalités et capacités existantes du Web et de mieux utiliser certaines des directives et des normes Web existantes. contraintes. Bien que REST lui-même soit profondément influencé par la technologie Web, en théorie, le style architectural REST n'est pas lié à HTTP, mais actuellement HTTP est la seule instance liée à REST. Ainsi, le REST que nous décrivons ici est également REST implémenté via HTTP.

Je travaillais sur un projet il n'y a pas longtemps, utilisant le framework Yii2 pour écrire un ensemble d'API de style RESTful. J'ai consulté le "Yii 2.0 Authoritative Guide" et j'ai constaté qu'il était écrit relativement brièvement. J'écris donc un article de didacticiel ici, dans l'espoir d'aider les amis qui découvrent le framework Yii2 RESTful à démarrer rapidement.

1. Structure du répertoire

Pour implémenter une API RESTful simple, vous n'avez besoin que de trois fichiers. Le répertoire est le suivant :

frontend
├─ config
│ └ main.php
├─ controllers
│ └ BookController.php
└─ models
└ Book.php

2. Configurer les règles d'URL

1. Modifier les règles de réécriture du serveur et pointer le tout. URL à indexer. php pour prendre en charge le format /books/1.

S'il s'agit d'un serveur Apache, créez un nouveau fichier .htaccess dans le répertoire frontend/web/. Le contenu du fichier est le suivant :

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

S'il s'agit d'un serveur Nginx, modifiez nginx/conf/nginx.conf et définissez-le dans le "emplacement / du "serveur{}" {} actuel, ajoutez le contenu marqué en rouge suivant :

location / {
  try_files $uri $uri/ /index.php$is_args$args;
}

2. Modifiez le frontend/config /main.php et ajoutez une URL à la règle du contrôleur de livre. De cette façon, les données peuvent être consultées et manipulées via de jolies URL et des verbes http significatifs. La configuration est la suivante :

'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'book'],
],
],
],

3. Créez un modèle

1. Créez une table de livre dans la base de données. Le contenu de la table book est le suivant :

-- ----------------------------
-- 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. Créez un nouveau Book.php dans le répertoire frontend/models/. Le contenu du fichier est le suivant :

namespace frontend\models;
use yii\db\ActiveRecord;
class Book extends ActiveRecord
{
public static function tableName()
{
return 'book';
}
}

4. Créez un contrôleur

Créez un nouveau BookController.php dans le frontend /contrôleurs/ répertoire. La classe du contrôleur s'étend de yiirestActiveController. En spécifiant yiirestActiveController::modelClass comme frontendmodelsBook, le contrôleur sait quel modèle utiliser pour obtenir et traiter les données. Le contenu du fichier est le suivant :

namespace frontend\controllers;
use yii\rest\ActiveController;
class BookController extends ActiveController
{
public $modelClass = 'frontend\models\Book';
}

5 Tests

À ce stade, nous avons terminé la création de RESTful. pour accéder à l'API de style de données utilisateur. L'API créée comprend :

GET /books : Liste tous les livres
HEAD /books : Afficher les informations récapitulatives de la liste de livres
POST /books : Ajouter 1 nouveau livre
GET /books/ 1 : Renvoyer les informations détaillées du livre ID=1
HEAD /books/1 : Afficher les informations récapitulatives du livre ID=1
PATCH /books/1 et PUT /books/1 : Mettre à jour l'ID du livre=1 Informations
DELETE /books/1 : Supprimer les informations sur l'ID du livre=1
OPTIONS /books : Afficher la prise en charge des verbes sur end/books
OPTIONS /books/1 : Afficher la prise en charge pour end/books/1 Le verbe

peut accéder à l'API en saisissant l'URL http://{nom de domaine du frontend}/books dans un navigateur Web, ou en utilisant certains plug-ins de navigateur pour envoyer des requêtes d'en-tête spécifiques, telles que RestClient de Firefox, Chrome Advanced Rest Client , facteur, etc.

6. Instructions

1.Yii mettra automatiquement au pluriel le nom du contrôleur utilisé à la fin. En effet, yiirestUrlRule peut automatiquement pluraliser les contrôleurs pour les points de terminaison qu'ils utilisent. Ce comportement peut être désactivé en définissant yiirestUrlRule::pluralize sur false :

'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'book', 'pluralize' => false],
],

2. Vous pouvez utiliser les champs et développer les paramètres pour spécifier quels champs doivent être inclus dans les résultats Inside. Par exemple : URL http://{nom de domaine du frontend}/books?fields=name,num ne renverra que les champs nom et num.

Ce qui précède est le didacticiel de démarrage rapide pour créer une API RESTful avec le framework Yii2 présenté par l'éditeur. J'espère qu'il vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra. à vous à temps. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !

Pour plus d'articles liés au didacticiel de démarrage rapide de l'API de style RESTful du framework Yii2, veuillez prêter attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn