Maison > développement back-end > tutoriel php > Explication détaillée de l'interface API Web et des spécifications reposantes

Explication détaillée de l'interface API Web et des spécifications reposantes

angryTom
Libérer: 2023-04-07 20:54:02
original
5109 Les gens l'ont consulté

Explication détaillée de l'interface API Web et des spécifications reposantes

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/
Copier après la connexion

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/
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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:指定筛选条件
Copier après la connexion

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"
}
Copier après la connexion

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"
        }
        ...
        ]
}
Copier après la connexion

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"
}}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal