Maison  >  Article  >  interface Web  >  Analyser les cas d'utilisation et les solutions des codes d'état 4xx dans le protocole HTTP

Analyser les cas d'utilisation et les solutions des codes d'état 4xx dans le protocole HTTP

WBOY
WBOYoriginal
2023-12-26 09:00:58846parcourir

Analyser les cas dutilisation et les solutions des codes détat 4xx dans le protocole HTTP

Explorez les scénarios d'application et les solutions des codes d'état 4xx dans le protocole HTTP

Introduction :
Dans le développement Web, le protocole HTTP joue un rôle très important. Il définit les règles et conventions de communication entre clients et serveurs. Parmi eux, le code d'état est un identifiant utilisé par le serveur pour transmettre l'état de traitement de la demande au client. Dans le protocole HTTP, les codes d'état 4xx indiquent qu'une erreur s'est produite côté client. Cet article explorera les scénarios d'application et les solutions des codes d'état 4xx et fournira des exemples de codes pertinents.

1. Scénarios d'application :

  1. 400 Mauvaise demande : indique que le client a soumis une demande invalide.

    • Scénario 1 : Les paramètres de la requête sont illégaux. Par exemple, les paramètres requis sont manquants, les valeurs des paramètres sont dans un format incorrect, etc.
    • Scénario 2 : Le format du corps de la requête est incorrect. Par exemple, le corps de la demande doit être au format JSON, mais ce qui est réellement soumis est au format XML.
  2. 401 Non autorisé : indique que le client n'est pas authentifié ou que l'authentification échoue.

    • Scénario 1 : identifiants d'authentification manquants. Par exemple, la demande doit contenir un jeton ou un cookie, mais le client ne le fournit pas.
    • Scénario 2 : échec de l'authentification. Par exemple, le jeton ou le cookie fourni a expiré ou n'est pas valide.
  3. 403 Interdit : Indique que le serveur a rejeté la demande.

    • Scénario 1 : Le client n'est pas autorisé à accéder à des ressources spécifiques. Par exemple, essayer d'accéder à des interfaces ou à des fichiers API restreints.
    • Scénario 2 : La fréquence d'accès est trop élevée. Par exemple, le serveur est limité à 100 requêtes par minute et le client dépasse la limite.
  4. 404 Not Found : Indique que la ressource demandée par le client n'existe pas.

    • Scénario 1 : Le chemin URL demandé n'existe pas. Par exemple, une adresse URL incorrecte a été saisie.
    • Scénario 2 : La ressource demandée a été supprimée ou déplacée. Par exemple, accédez à un article supprimé.

2. Solution :

  1. Solution 400 requêtes incorrectes :

    • Utilisez la bibliothèque d'outils de vérification des paramètres. Par exemple, vérifiez la validité des paramètres de la demande, par exemple si les paramètres sont vides, si la longueur répond aux exigences, etc.
    • Utilisez des expressions régulières pour vérifier le format du corps de la requête. Par exemple, des expressions régulières sont utilisées pour déterminer si le corps de la requête répond à des exigences de format spécifiques.

    Exemple de code :

    @RequestMapping(value = "/example", method = RequestMethod.POST)
    public ResponseEntity<String> example(@RequestBody ExampleRequest request) {
        if (StringUtils.isBlank(request.getName())) {
            return ResponseEntity.badRequest().body("Name cannot be blank");
        }
        if (!request.getAge().matches("\d+")) {
            return ResponseEntity.badRequest().body("Age must be a number");
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }
  2. 401 Solution non autorisée :

    • Fournir une interface d'authentification et renvoyer un jeton ou un cookie. Le client doit ajouter un jeton ou un cookie à chaque demande.
    • Utilisez des intercepteurs pour intercepter les interfaces qui nécessitent une authentification. Vérifiez si l'en-tête de la requête contient un jeton ou un cookie valide.

    Exemple de code :

    public class AuthInterceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("Token");
            if (StringUtils.isBlank(token)) {
                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                response.getWriter().println("Authentication failed");
                return false;
            }
            // 验证Token的合法性
            // ...
            return true;
        }
    }
  3. 403 Solution interdite :

    • Contrôle des autorisations pour chaque ressource. Seuls les utilisateurs disposant des autorisations suffisantes y ont accès.
    • Utilisez les outils de limitation actuels pour limiter la fréquence des demandes. Lorsque la fréquence des requêtes dépasse la limite, un code d'état 403 Forbidden est renvoyé.

    Exemple de code :

    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    @RequiresRoles("admin")
    public ResponseEntity<String> admin() {
        // 处理业务逻辑
    }
  4. Solution 404 introuvable :

    • Renvoie une page 404 personnalisée lorsque le chemin d'URL demandé n'existe pas.
    • Enregistrez les journaux et informez le personnel concerné. Si la ressource demandée a été supprimée ou déplacée, informez-en le client et fournissez l'URL correcte.

    Exemple de code :

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResponseEntity<String> getResource(@PathVariable("id") String id) {
        // 查询资源
        // 若资源不存在,则返回404 Not Found状态码
        if (resource == null) {
            return ResponseEntity.notFound().build();
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }

Conclusion :
En explorant les scénarios d'application et les solutions des codes d'état 4xx, nous pouvons mieux comprendre la signification des codes d'état 4xx dans le protocole HTTP et être plus efficaces dans le développement. Gérer ces conditions d'erreur correctement. L'utilisation raisonnable des codes d'état 4xx peut offrir une meilleure expérience utilisateur au client et est également utile pour le dépannage et la réparation.

(Remarque : les exemples de code ci-dessus sont des exemples du framework Java Spring MVC. Les méthodes d'implémentation d'autres langages de programmation et frameworks peuvent être différentes, mais les idées sont similaires)

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!

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