L'API du projet actuel souhaite utiliser un style reposant, et l'interface API actuelle renvoie la spécification : toutes les interfaces réussies renvoient {status:200,msg:'',data:{}}, et les interfaces d'erreur renvoient {status:403, msg : '',data :{}}, c'est-à-dire qu'il n'y a que deux statuts : 200 et 403. J'ai senti que quelque chose n'allait pas, alors j'ai cherché en ligne
200 OK - [GET] : Le serveur renvoie avec succès les données demandées par l'utilisateur L'opération est idempotente.
201 CREATED - [POST/PUT/PATCH] : L'utilisateur a réussi à créer ou à modifier des 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.
400 INVALID REQUEST - [POST/PUT/PATCH] : Il y a une erreur dans la requête émise par l'utilisateur. Le serveur ne crée ni ne modifie les données. Cette opération est idempotente.
401 Non autorisé - [*] : indique que l'utilisateur n'a pas d'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. L'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 DE SERVEUR INTERNE - [*] : Une erreur de serveur s'est produite et l'utilisateur ne pourra pas déterminer si la demande effectuée a réussi.
Dois-je suivre cette spécification pour renvoyer les codes d'état en fonction de différentes situations ? Par exemple, une demande d'obtention renvoie 200 avec succès et une demande de publication renvoie 201 avec succès ? Au lieu de simplement rendre 200 en cas de succès ? Au fait, ces codes d’état sont-ils vraiment écrits dans la valeur de retour ? Ne devrait-il pas être déterminé automatiquement dans le protocole http ? Ou le modifier dans l'en-tête renvoyé ? C'est très déroutant ici, j'espère que quelqu'un pourra clarifier les choses !
Il existe deux méthodes
1.status_code vaut tous 200, le corps de la réponse est le suivant :
Succès
成功
失败
2.根据不同的status_code处理(推荐)
成功(2xx)
,直接返回数据,不用额外包装失败(4xx,5xx)
Échec
🎜 rrreee 🎜2. Traiter selon différents status_code (recommandé) 🎜Succès (2xx)
, renvoyer les données directement sans emballage supplémentaire🎜 rrreee 🎜Échec (4xx, 5xx)
, renvoie errcode et errmsg🎜 rrreee{status:200,msg:'',data:{}}
Cela devrait être le résultat de retour écrit par vous dans l'API. Par exemple, la servlet renvoie une chaîne json contenant ces 3 champs. En d’autres termes, le frontal ne peut lire ces informations que lorsque votre API est renvoyée avec succès. Si la requête échoue et ne peut pas être lue, vous pouvez essayer de demander une mauvaise URL depuis le front-endEn fait, s'il est standardisé, il doit être renvoyé comme ceci
header('HTTP/1.0 401 Unauthorized');
header('HTTP/1.0 403 Forbidden');
Cependant, dans les situations réelles, de nombreuses personnes ne seront pas aussi standardisées.
Même les requêtes GET et les requêtes POST sont mélangées, alors comment pouvons-nous parler de standards ?
À l'origine, cela devrait être fait conformément à la réglementation, mais les opérateurs de télécommunications nationaux pourraient détourner le saut. Par exemple, si vous renvoyez 404, l’opérateur risque de vous rediriger vers son propre site de navigation, ce qui serait embarrassant.
Les données renvoyées par votre interface et la réponse http sont deux choses différentes
Le code renvoyé par l'interface est prédéterminé. Vous pouvez le définir comme vous le souhaitez.
L'information que vous vérifiez est le code d'état de la réponse http et n'a rien à voir avec le retour de votre interfaceCode d'erreur commerciale 4xx
Succès 200 - 204
Erreur système 5xx