Qu'est-ce qu'une interface API web ?
Effacez la méthode de requête, fournissez les paramètres requis par le backend correspondant et demandez le lien URL pour obtenir les données de réponse du backend
Méthode de requête : get, poster, put, patch....
Paramètres de requête : données de type clé-valeur au format json ou xml
Résultat de la réponse : renvoyer les données de type clé-valeur au format json ou xml
Comment écrire une interface ?
Écrivez le lien URL en référence à une certaine règle (spécification) et formulez la méthode de requête, les données de la demande et les résultats de la réponse selon les règles
Spécification de l'interface : spécification de l'interface webapi : restful
Introduction RESTful
REST n'a rien à voir avec la technologie. Il représente un style d'architecture logicielle. REST est l'abréviation de Representational State. Transfert, et sa traduction chinoise est "Transfert d'état de représentation" ou "transformation d'état de couche de présentation".
Nom de domaine
Utilisez le mot-clé api pour identifier l'url de l'interface
https://api.example.com https://example.org/api/
Remarque : Si vous voyez le mot api, cela signifie que la requête le lien URL est avant la fin
Version de l'interaction avec les données d'arrière-plan
1 Mettez les informations de version dans l'URL, telles que :
https://api.example.com/v1/ https://api.example.com/v2/
v1, v2 représente différentes versions de données Retrait, le principe est qu'une ressource de données a plusieurs versions
2. Mettez les informations de version dans l'en-tête de la demande.
chemin d'URL
Tout sur Internet est considéré comme une ressource, et il est représenté par des noms (généralement au pluriel)
https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees
dans le lien url Les récompenses n'apparaissent pas les verbes qui exploitent les ressources
Exemple d'erreur : https://api.baidu.com/delete-user
Les verbes peuvent apparaître dans des interfaces spéciales parce que ceux-ci L'interface n'a généralement pas de ressource claire, ou le verbe est le sens principal de l'interface
https://api.baidu.com/place/search https://api.baidu.com/login
méthode de demande
GET : retirez-en un ou plus de ressources du serveur )
POST : Créer une nouvelle ressource sur le serveur
PUT : Mettre à jour la ressource sur le serveur (le client fournit la ressource complète modifiée)
PATCH : Mettre à jour la ressource sur le serveur (client Fournir les attributs modifiés sur le client)
DELETE : Supprimer les ressources du serveur
Filtrage
Pass conditions de recherche sous forme de paramètres de téléchargement dans l'url
https://api.example.com/v1/zoos?limit=10:指定返回记录的数量 https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置 https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数 https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序 https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
Code de statut
200 OK - [GET] : Le serveur renvoie avec succès les données demandées par l'utilisateur. Cette opération est idempotente.
201 CREATED - [POST/PUT/PATCH] : L'utilisateur a créé ou modifié avec succès les données.
202 Accepté - [*] : Indique qu'une requête est entrée dans la file d'attente en arrière-plan (tâche asynchrone)
204 AUCUN CONTENU - [DELETE] : L'utilisateur a supprimé les données avec succès.
301 : Redirection permanente
302 : Redirection temporaire
400 DEMANDE INVALIDE - [POST/PUT/PATCH] : La requête émise par l'utilisateur a une erreur et le serveur n'a pas procédé. L'opération de création ou de modification de données est idempotente.
401 Non autorisé - [*] : indique que l'utilisateur n'a pas l'autorisation (le jeton, le nom d'utilisateur et le mot de passe sont incorrects).
403 Forbidden - [*] Indique que l'utilisateur est autorisé (contrairement à l'erreur 401), mais que l'accès est interdit.
404 NOT FOUND - [*] : La requête émise par l'utilisateur concerne un enregistrement qui n'existe pas, et le serveur n'a pas effectué l'opération. Cette opération est idempotente.
406 Not Acceptable - [GET] : Le format demandé par l'utilisateur n'est pas disponible (par exemple, l'utilisateur a demandé le format JSON, mais uniquement le format XML).
410 Gone -[GET] : La ressource demandée par l'utilisateur a été définitivement supprimée et ne sera plus obtenue.
422 Entité non traitable - [POST/PUT/PATCH] Une erreur de validation s'est produite lors de la création d'un objet.
500 ERREUR SERVEUR INTERNE - [*] : Une erreur de serveur s'est produite et l'utilisateur ne pourra pas déterminer si la requête effectuée a abouti.
Gestion des erreurs
Lorsque le code d'état est 4xx, les informations d'erreur doivent être renvoyées et l'erreur est utilisée comme clé.
{ error: "Invalid API key" }
Résultats de retour
Pour différentes opérations, les résultats renvoyés par le serveur à l'utilisateur doivent être conformes aux spécifications suivantes
GET /collection : Renvoie une liste d'objets ressources (Array)
GET /collection/resource : renvoie un seul objet ressource
POST /collection : renvoie un objet ressource nouvellement généré
PUT / collection/resource : renvoie un objet ressource complet
PATCH /collection/resource : renvoie un objet ressource complet
DELETE /collection/resource : renvoie un document vide
{ "status": 0, "msg": "ok", "results":[ { "name":"肯德基(罗餐厅)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月罗路2380号", "province":"上海市", "city":"上海市", "area":"宝山区", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
API Hypermedia
L'API RESTful est mieux implémentée en tant qu'Hypermedia, c'est-à-dire que des liens sont fournis dans les résultats renvoyés vers d'autres méthodes API, afin que les utilisateurs sachent quoi faire ensuite sans consulter la documentation.
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}
Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!