J'ai récemment appris la spécification de l'interface RESTful et j'ai utilisé Postman pour la présenter. Voici les spécifications de l'interface RESTful pertinentes : 1. Qu'est-ce que RESTful ?
REST : il s'agit d'un style architectural pour les services Web ; il utilise des normes et des protocoles très populaires tels que HTTP, URI, XML, JSON et HTML ; il s'agit d'une conception architecturale légère, multiplateforme et multilingue ; le style, pas Une norme est une idée.
RESTful : le chinois correspondant est REST ; le service Web Restful est une application REST courante, qui est un service Web conforme au style REST. Le service Web REST est une sorte d'architecture ROA (architecture orientée ressources) (architecture orientée ressources). ) [Recommandation : interface Web]
L'essence de RESTful est un style d'architecture logicielle. Le noyau est orienté ressources et résout les problèmes suivants :
Réduire la complexité du développement
Améliorer l’évolutivité du système
2.La différence entre SOAP et REST :
SOAP (Simple Object Access Protocol) : spécification de protocole pour l'échange de données. Il s'agit d'un protocole léger et simple basé sur XML.
REST (Representational State Transfer) : style d'architecture logicielle qui peut réduire la complexité du développement et améliorer l'évolutivité du système.
Efficacité et simplicité d'utilisation :
SOAP : En raison de l'expansion continue du contenu de son propre protocole en raison de divers besoins, les performances du traitement SOAP ont diminué. Dans le même temps, la facilité d’utilisation et les coûts d’apprentissage ont également augmenté.
RESTful : En raison de sa conception d'interface orientée ressources et de son abstraction des opérations, il simplifie les mauvaises conceptions des développeurs et utilise également au maximum le concept original de conception de protocole d'application HTTP.
Sécurité :
RESTful est très adapté aux interfaces de services basées sur les ressources et est particulièrement adapté aux scénarios qui nécessitent une efficacité élevée mais de faibles exigences de sécurité.
La maturité de SOAP peut apporter de la commodité à la conception d'interfaces qui doivent être fournies pour plusieurs langages de développement et qui ont des exigences de sécurité plus élevées.
En résumé:
Sécurité : SOAP sera meilleur que REST ;
Efficacité et simplicité d'utilisation : REST c'est mieux ;
Maturité : De manière générale, SOAP est supérieur à REST en terme de maturité.
3. Comment concevoir l'API RESTful :
Chemin de la ressource : dans l'architecture RESTful, chaque URL représente une ressource, l'URL ne peut donc pas contenir de verbes, uniquement des noms. De manière générale, les noms dans les API doivent être au pluriel.
Verbe HTTP : Opération de ressources (CURD), représenté par le verbe HTTP (prédicat).
GET : Récupère des ressources (un ou plusieurs éléments) du serveur.
POST : créez une nouvelle ressource sur le serveur.
PUT : Mettre à jour les ressources sur le serveur (le client fournit l'intégralité des ressources modifiées).
DELETE : supprime la ressource du serveur.
Prenons l'exemple du zoo (incluant des informations sur divers animaux et employés) :
https://api.example.com/v1/zoos //Ressources du zoo https://api.example.com/v1/animals //Ressources animales https://api.example.com/v1/employees //Employés ressource
POST /zoos : Créer un nouveau zoo
GET /zoos/ID : obtenir des informations sur un zoo spécifié
PUT /zoos/ID : mettre à jour les informations d'un zoo spécifié
DELETE /zoos/D : Supprimer un zoo
Informations sur le filtre :
?limit=10 : Spécifiez le nombre d'enregistrements renvoyés
?offset=10 : Spécifie la position de départ de l'enregistrement renvoyé.
?page=2&per_page=100 : Spécifiez la page et le nombre d'enregistrements par page.
?sortby=name&order=asc : spécifiez par quel attribut les résultats renvoyés sont triés et l'ordre de tri.
?animal_type_id=1 : Spécifier les conditions de filtre
Code d'état :
200 (OK) - si une ressource existante a été modifiée
201 (créé) - si une nouvelle ressource est créée
202 (accepté) - La demande de traitement a été acceptée mais n'a pas été complétée (traitement asynchrone)
301 (Déplacé de façon permanente) - L'URI de la ressource a été mis à jour
303 (Voir Autres) -Autres (tels que l'équilibrage de charge)
400 (mauvaise demande) - fait référence à une mauvaise demande
404 (introuvable)-La ressource n'existe pas
406 (non acceptable) - Le serveur ne prend pas en charge la représentation requise
409 (conflit) - Conflit générique
412 (Échec de la précondition) : la précondition a échoué (par exemple, un conflit lors de l'exécution des mises à jour des conditions)
415 (type de média non pris en charge) - La représentation reçue n'est pas prise en charge
500 (erreur de serveur interne) - réponse d'erreur générique
503 (Service non disponible) - Le service n'est actuellement pas en mesure de traiter la demande
Gestion des erreurs :
Les informations renvoyées utilisent error comme nom de clé et les informations d'erreur comme valeur de clé.
{ erreur : « Clé API invalide » }
Résultats de retour :
GET /collection : renvoie une liste (tableau) d'objets ressources
GET /collection/resource : renvoie un seul objet ressource
POST /collection : renvoie l'objet ressource nouvellement généré
PUT /collection/resource : renvoie l'objet ressource complet
PATCH /collection/resource : renvoie l'objet ressource complet
DELETE /collection/resource : renvoie un document vide
4. Processus de test d'interface de style REST :
Présentons-le directement avec une image.
5. Rédaction de code et tests Postman :
Outils : idée, base de données mysql, Postman
Données du tableau de la base de données :
Classe d'entité :
Entrée front-end (vue) au cours de maîtrise : entrez dans l'apprentissage
@Données @ApiModel("Classe d'entité utilisateur") public class User extends Model<User> implémente Serialisable { @ApiModelProperty("ID utilisateur") @NotNull(message = "L'ID utilisateur ne peut pas être vide") Identifiant entier privé ; @NotBlank(message = "Le nom d'utilisateur ne peut pas être vide") @ApiModelProperty("nom d'utilisateur") nom de chaîne privé ; @Min(1) @Max(100) @ApiModelProperty("Âge de l'utilisateur") âge entier privé ; @NotEmpty(message = "La boîte aux lettres ne peut pas être vide") @ApiModelProperty("E-mail de l'utilisateur") @E-mail e-mail de chaîne privé ; @ApiModelProperty("0 : Non supprimé 1 : Supprimé") @TableLogic Entier privé supprimé ; @NotBlank(message = "Le mot de passe ne peut pas être vide") @ApiModelProperty("Mot de passe utilisateur") mot de passe de chaîne privée ; }
Code de la couche contrôleur (couche de service omise) :
@Api(tags = "Gestion des utilisateurs") @RestController @RequestMapping("/MonsiteWeb/utilisateur") classe publique UserController { @Autowired privé UserServiceImpl userServiceimpl; @ApiOperation(value = "Nouvel utilisateur") @PostMapping public int insertUser (Utilisateur utilisateur) { System.out.println("Ajouter avec succès"); return userServiceimpl.insertUser(user); } @ApiOperation(value = "Modifier les informations utilisateur") @PutMapping public void updateUser (@RequestBody @Valid User user) { userServiceimpl.updateUser(utilisateur); System.out.println("Modification réussie"); } @ApiOperation(value = "Supprimer l'utilisateur", notes = "Supprimer l'utilisateur en fonction de l'identifiant") @DeleteMapping("/{id}") public int deleteUser (@ApiParam("user id") @PathVariable @Valid Integer id) { System.out.println("Suppression réussie"); return userServiceimpl.deleteUser(id); } @ApiOperation(value = "Interroger tous les utilisateurs") @GetMapping liste publique<Utilisateur> allUser() { System.out.println("Requête réussie"); return userServiceimpl.allUser(); } @ApiOperation(value = "id utilisateur de requête") @GetMapping("/{id}") public User selectById (@PathVariable("id") String id) { return userServiceimpl.selectById(id); } }
Utilisez Postman pour tester (le chemin de l'url doit correspondre) :
Interroger tous les utilisateurs : http://localhost:8081/MyWebsite/user
En-tête : Content-Type=application/json
Corps : vide
Requête réussie !
Requête basée sur l'identifiant :
Requête réussie !
Ajouter un nouvel utilisateur :
Vérifiez que la base de données a été ajoutée avec succès !
Modifier les informations de l'utilisateur (modifier le nom et l'âge avec l'ID 7) :
Vérifiez que la modification de la base de données a réussi !
Supprimer les utilisateurs en fonction de l'identifiant :
Vérifiez que la base de données a été supprimée avec succès ! (supprimé=1)
Peut-être avez-vous supprimé directement l'intégralité des données
Lors de l'interrogation, de la mise à jour ou de la suppression de données inexistantes (ou les données sont illégales), l'exécution échoue. Il existe d'autres interfaces, comme la suppression de toutes les interfaces, je ne les ai pas testées une par une ici. signalez-les.
Ce qui précède est l'introduction détaillée de la spécification d'interface restful et de l'outil de débogage postman !