[JAVA] Spring avec Kotorin - 4 Conception d'API REST

Aperçu / Description

Dans Spring with Kotorin --3. Omitting curly braces from function, API accessible par la méthode GET / POST / PUT / DELETE pour RestController Ajoutée.

Cependant, il n'y avait pas de directive particulière sur la façon de l'ajouter, et il a été ajouté de manière appropriée. Par conséquent, la seule directive était de rendre l'API à publier facile à comprendre, et chaque fonction définie comme suit était nommée et définie.

@GetMapping(value = ["/display"])
fun getMessages() : List<Message> {

Par conséquent, je voudrais le changer en une conception ** de type API REST **.

Hypothèse / environnement

Version d'exécution

Spring Dependencies

Environnement de développement

Procédure / Explication

Conception d'API REST

Ici, nous ne considérerons pas encore strictement la conception de l'API, mais nous ne considérerons que la politique minimale.

URI d'accès

La définition originale était de déterminer le chemin racine en annotant la classe et de déterminer l'URI d'accès pour chaque fonction. Le nom était une notation verbale pour une utilisation facile.

@RequestMapping("/simple")
class SimpleController {

    @GetMapping(value = ["/display"])
    fun getMessages() : List<Message> {

Par conséquent, en réalité, l'accès était le suivant, et c'était un accès semblable à un verbe.

http://xxx/simple/display

Ce que je voulais * afficher * dans ce processus était ** messages **. Par conséquent, changez l'accès de ce qui précède à l'accès avec la nomenclature prévue pour * messages * comme suit.

http://xxx/messages

@RequestMapping("/messages")
class SimpleController {

    @GetMapping()
    fun getMessages() : List<Message> {

L'URL d'accès décrite dans la fonction a disparu, ce qui sera expliqué ci-après.

Méthodes HTTP et opérations CRUD

J'ai essayé d'accéder par nomenclature avec l'URI d'accès expliqué ci-dessus. Assurez-vous que l'opération CRUD (CREATE / READ / UPDATE / DELETE) sur le nom d'accès est représentée par la méthode HTTP (GET / POST / PUT / DELETE). Par conséquent, vous n'avez plus besoin d'un URI d'accès par fonction tel que défini précédemment.

La relation entre les méthodes HTTP et les opérations CRUD est la suivante.

Méthode HTTP Fonctionnement CRUD sens
GET READ Avoir
POST CREATE enregistrement
PUT UPDATE mise à jour
DELETE DELETE Effacer
POST / PUT - Égalité

POST et PUT sont des méthodes HTTP utilisées pour créer et mettre à jour des états. Alors pourquoi POST a-t-il été CREATE et PUT UPDATE?

La raison est l'équivalence des méthodes HTTP.

L'égalité est une propriété qui donne le même résultat même si elle est réexécutée.

L'égalité de la méthode HTTP est la suivante.

Méthode HTTP Égalité
GET 冪 etc.
POST Non-mort, etc.
PUT 冪 etc.
DELETE 冪 etc.

Imaginez le processus d'inscription. Si vous exécutez la même instruction plusieurs fois, le même enregistrement sera créé plusieurs fois. Ce n'est pas un fantôme. D'autre part, dans le processus de mise à jour, le résultat ne change pas même si la même instruction est exécutée plusieurs fois. C'est un 冪 etc.

En pensant de cette manière, il s'avère que ** POST = CREATE = non- 冪 etc. ** / ** PUT = UPDATE = 冪 etc. ** est approprié.

Correction de l'API REST

Sur la base de ce qui précède, il a été modifié comme suit.

--Accès féminin

Avant correction


@RequestMapping("/simple")
class SimpleController {

    @PutMapping(value = ["/insert"])
    fun insertMessage(@RequestBody message: Message) : Message {}

    @PostMapping(value = ["/update"])
    fun updateMessage(@RequestBody message: Message) : Message {}

modifié


@RequestMapping("/messages")
class SimpleController {

    @PostMapping
    fun insertMessage(@RequestBody message: Message) : Message {}

    @PutMapping
    fun updateMessage(@RequestBody message: Message) : Message {}

Résumé / Rétrospective

Cette fois, j'ai abordé «facile» la conception de l'API REST. À proprement parler, cela ne suffit pas. Il y a encore de nombreux éléments à prendre en compte, tels que la gestion des versions d'API, la superposition, la représentation de la collection et le code d'état.

Pour le moment, cette fois je l'ai traité comme la chose minimale à penser et faire simplement.

À l'avenir, j'aimerais reconsidérer la conception des API en parlant de la conception des microservices.

Cette source

Recommended Posts

Spring avec Kotorin - 4 Conception d'API REST
Ressort avec actionneur Kotorin --5
Printemps avec Kotorin ―― 1. INITIALISATION PRINTEMPS
Spring with Kotorin --- 8. Couche de référentiel
Spring avec Kotorin --6 Traitement asynchrone
Ressort avec Kotorin ―― 7. Couche de service
Test de l'API REST avec REST Assured
Lier l'API avec Spring + Vue.js
Hello World (API REST) avec Apache Camel + Spring Boot 2
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Test de l'API REST à l'aide de REST Assured Part 2
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Spring with Kotorin ―― 9. Migration de base de données ―― Flyway
Implémenter l'API REST avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Spring avec Kotorin --2 RestController et Data Class
Créez une API REST avec Apache2 + Passenger + Sinatra.
Configurer des microservices avec Spring Cloud (4): API Gateway
Spring with Kotorin --8 Repository layer --Supplément: H2 Database
Créer un serveur API Web avec Spring Boot
Compatible avec Android 10 (API 29)
J'ai créé un domaine api avec Spring Framework. Partie 2
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Ressort avec Kotorin ―― 3. Omettre les crochets d'onde de la fonction
Un mémorandum lors de la création d'un service REST avec Spring Boot
Validation personnalisée avec Spring
J'ai créé un domaine api avec Spring Framework. Partie 1
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Avec Kotorin ―― 7. Fonction de cadrage
Télécharger avec Spring Boot
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Faisons une API simple avec EC2 + RDS + Spring boot ①
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Ce à quoi j'étais accro avec l'API REST Redmine
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Configuration Java avec Spring MVC
Créer une API XML-RPC avec Wicket
Tester l'API Web avec junit
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Utiliser l'API Bulk avec RestHighLevelClient
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Fonction de connexion avec Spring Security
Introduction à l'API EHRbase 2-REST
Utilisation de Mapper avec Java (Spring)
Spring Boot à partir de Docker
Hello World avec Spring Boot