Dans le monde des codes HTTP, chaque réponse du serveur est comme un message venu de l'autre bout de l'univers. Vous avez envoyé une demande, et maintenant ce code mystérieux apparaît à l'écran. Qu'est-ce que ça veut dire? Comment doit-on le comprendre ? Voyons comment capter les signaux du serveur et ne pas tomber dans un piège.
Pourquoi nous répondent-ils avec des codes ?
Le serveur est comme un bon vieux professeur. Il n'écrira pas de longues lettres à chaque fois. Il utilise des codes HTTP, ou des signaux à trois chiffres, dans ses réponses pour vous aider (ainsi que les autres développeurs) à comprendre ce qui se passe. Ils sont répartis en cinq catégories, comme des tranches d'âge respectées, du sage informatif (1xx) au capricieux erroné (4xx et 5xx).
Voici nos personnages principaux :
-
1xx : Le serveur, sirotant pensivement son café, dit : "Oui, oui, je travaille, attends..."
-
2xx : Tout va bien, la demande est complétée, le serveur est content.
-
3xx : "Oh, écoute, tu as fait fausse route. Laisse-moi te rediriger !"
-
4xx : Le serveur s'indigne : « Tu m'as mal compris, que veux-tu ? »
-
5xx : Oh, il semble que le serveur ait laissé tomber quelque chose d'important et s'est perdu.
Comment savoir si le serveur est content ? Codes 2xx
Le serveur, comme tout introverti, est tout simplement heureux si vous avez tout fait correctement. Voici ses signaux d'approbation :
-
200 OK - "Tout s'est passé comme sur des roulettes !" La demande a été traitée, vous pouvez vous réjouir.
-
201 Créé - "Quelque chose de nouveau a été créé, attrapez-le !" En prime, cela pourrait être une nouvelle entrée dans la base de données.
-
204 No Content - "Tout est prêt, mais je n'ai rien à montrer." Par exemple, vous avez supprimé quelque chose et il n'y a plus rien à afficher.
Exemple en Java : Comment obtenir ce « OK » magique ?
HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");
if (connection.getResponseCode() == 200) {
System.out.println("Сервер сказал ОК! Тянем данные...");
}
Copier après la connexion
Copier après la connexion
Et si le serveur n'est pas content ? Codes 4xx
Il se peut qu'il y ait déjà des problèmes ici, comme si vous avez accidentellement **ouvert la mauvaise porte**.
-
400 Bad Request - "Vous avez clairement fait quelque chose de mal dans votre demande."
-
401 Non autorisé - "Qui es-tu ? Je ne te connais pas." On dirait que vous avez besoin d'un mot de passe !
-
402 Paiement requis. Ce code était réservé à l’accès payant à certaines ressources, mais n’est quasiment jamais utilisé. S’il était utilisé, cela ressemblerait à : « Payez d’abord la facture, puis accédez ! » Peut-être que le serveur se tiendrait à l'entrée avec une caisse enregistreuse.
-
403 Forbidden - "Hé, même avec le mot de passe, tu ne peux pas entrer ici." Apparemment, l'accès est erroné.
-
404 Not Found - "C'était quelque part... mais il a disparu quelque part." Ce code est tout simplement classique.
-
Conflit 409 - "Vous et quelqu'un d'autre voulez la même chose. Qui va gagner ?"
- Exemple : gestion des erreurs lorsque le serveur grogne
int responseCode = connection.getResponseCode();
if (responseCode == 404) {
System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
System.out.println("Ой, кажется, сюда нужен пароль.");
}
Copier après la connexion
Copier après la connexion
Lorsque le serveur hébergeait un concert de rock : codes 5xx
Et puis le serveur n’en peut plus. Il voulait travailler, mais quelque part, quelque chose n'allait clairement pas.
-
Erreur interne du serveur 500 - Imaginez que le serveur soit une rock star qui perd soudainement une note au milieu d'un concert et est obligée d'admettre sa défaite : « Quelque chose s'est mal passé ! C'est la réaction standard du serveur lorsqu'il ne comprend pas lui-même ce qui s'est passé. Dans le code, cela ressemble souvent à « Erreur générale, quelque chose n'a pas fonctionné », et dans les journaux, vous pouvez voir quelque chose comme « Une erreur inconnue s'est produite ».
-
501 Non implémenté - Ce code signifie que le serveur n'a aucune idée de la manière de traiter la requête en cours. Vous pouvez l'imaginer comme un informaticien à qui on demande de réparer le robinet de la cuisine. Il se tient avec la clé, regarde le robinet et dit : « Ce n'est pas ma spécialité ! » Le plus souvent, cela se produit si le client fait une demande que le serveur ne prend pas en charge.
-
502 Bad Gateway Ici un serveur intermédiaire (passerelle ou proxy) essaie de contacter un autre serveur, mais il a répondu avec quelque chose d'incompréhensible ou n'a pas répondu du tout
-
Service 503 indisponible - "Oh, je ne peux pas pour le moment, donnez-moi cinq minutes." Soit le service est en panne, soit le serveur est plein. Si le serveur pouvait prendre des jours de congé, ce serait son code préféré.
-
504 Gateway Timeout Ce code signifie que le serveur n'a pas attendu de réponse d'un autre serveur qui aurait dû répondre à la requête. Imaginez un serveur attendant une réponse qui n'est jamais arrivée. En conséquence, le serveur dit au client : « Eh bien, j'ai attendu et attendu, mais je n'ai rien obtenu. »
Utiliser RestTemplate : comment communiquer avec un serveur au Spring
Lorsque vous travaillez avec Spring, vous disposez d'un RestTemplate et d'un WebClient pour les requêtes. Ils vous permettent de capter les réponses du serveur comme un vrai pêcheur.
RestTemplate : récupérer la réponse du serveur
HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");
if (connection.getResponseCode() == 200) {
System.out.println("Сервер сказал ОК! Тянем данные...");
}
Copier après la connexion
Copier après la connexion
WebClient pour les amateurs d'asynchronie
WebClient est un outil pour ceux qui n'ont pas peur de travailler dans le style « attendre, mais pas tout de suite ». C'est comme si vous disiez : "Serveur, faites ce que vous pouvez, et j'attendrai pour l'instant."
int responseCode = connection.getResponseCode();
if (responseCode == 404) {
System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
System.out.println("Ой, кажется, сюда нужен пароль.");
}
Copier après la connexion
Copier après la connexion
Conseil
Vérifiez les délais d'attente - parfois le serveur se bloque et vous devriez être à l'heure pour le déjeuner. Réglez le temps d'attente.
N'oubliez pas la journalisation : chaque code est important ! Enregistrez vos réponses et vous serez toujours en mesure de comprendre ce qui n'a pas fonctionné.
Travaillez avec 4xx et 5xx - apprenez de vos erreurs. Mieux vous gérerez ces réponses, plus votre application sera robuste.
Conclusion
Le serveur est une créature capricieuse, et chaque fois que vous recevez un code de sa part, c'est comme si vous résolviez un rébus. Mais, connaissant les codes de base et leur signification, vous pourrez rapidement comprendre ce qui est exigé de vous !
Rappelez-vous : les codes HTTP sont le langage de communication entre votre code Java et le serveur. Sachez le lire, et le serveur sera toujours content.
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!