[JAVA] Feder mit Kotorin --4 REST API Design

Übersicht / Beschreibung

In Spring with Kotorin --3. Auslassen von geschweiften Klammern aus der Funktion, API, auf die mit der GET / POST / PUT / DELETE-Methode für RestController zugegriffen werden kann Hinzugefügt.

Es gab jedoch keine spezielle Richtlinie zum Hinzufügen und sie wurde entsprechend hinzugefügt. Daher bestand die einzige Richtlinie darin, die zu veröffentlichende API leicht verständlich zu machen, und jede wie folgt definierte Funktion erhielt einen Namen und wurde definiert.

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

Daher möchte ich es in ein ** REST API-ähnliches ** Design ändern.

Annahme / Umwelt

Laufzeitversion

Spring Dependencies

Entwicklungsumgebung

Vorgehensweise / Erklärung

REST-API-Design

Hier werden wir das API-Design noch nicht streng betrachten, sondern nur die Mindestrichtlinie.

Zugriff auf URI

Die ursprüngliche Definition bestand darin, den Stammpfad durch Annotieren der Klasse und den Zugriffs-URI für jede Funktion zu bestimmen. Der Name dort war eine Verbnotation für einfache Bedienung.

@RequestMapping("/simple")
class SimpleController {

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

Daher war der Zugriff in Wirklichkeit wie folgt und es war ein verbartiger Zugriff.

http://xxx/simple/display

Was ich in diesem Prozess * anzeigen * wollte, waren ** Nachrichten **. Ändern Sie daher den Zugriff von oben auf den Zugriff mit der vorgesehenen Nomenklatur für * Nachrichten *, wie unten gezeigt.

http://xxx/messages

@RequestMapping("/messages")
class SimpleController {

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

Die in der Funktion beschriebene Zugriffs-URL ist nicht mehr vorhanden. Dies wird im Folgenden erläutert.

HTTP-Methoden und CRUD-Operationen

Geändert zum Zugriff nach Nomenklatur mit der oben erläuterten Zugriffs-URI. Stellen Sie sicher, dass die CRUD-Operation (CREATE / READ / UPDATE / DELETE) für das Nomen, auf das zugegriffen wird, durch die HTTP-Methode (GET / POST / PUT / DELETE) dargestellt wird. Infolgedessen benötigen Sie keinen Funktions-URI mehr pro Funktion, wie zuvor definiert.

Die Beziehung zwischen HTTP-Methoden und CRUD-Operationen ist wie folgt.

HTTP-Methode CRUD-Betrieb Bedeutung
GET READ Erhalten
POST CREATE Anmeldung
PUT UPDATE aktualisieren
DELETE DELETE Löschen
POST / PUT - Gleichheit

Sowohl POST als auch PUT sind HTTP-Methoden zum Erstellen und Aktualisieren von Status. Warum war POST CREATE und PUT UPDATE?

Der Grund ist die Gleichwertigkeit der HTTP-Methoden.

Gleichheit ist eine Eigenschaft, die das gleiche Ergebnis liefert, selbst wenn sie erneut ausgeführt wird.

Die Gleichheit der HTTP-Methode ist wie folgt.

HTTP-Methode Gleichberechtigung
GET 冪 etc.
POST Nicht-Tod usw.
PUT 冪 etc.
DELETE 冪 etc.

Stellen Sie sich den Registrierungsprozess vor. Wenn Sie dieselbe Anweisung mehrmals ausführen, wird derselbe Datensatz mehrmals erstellt. Es ist kein Geist. Andererseits ändert sich beim Aktualisierungsprozess das Ergebnis nicht, selbst wenn derselbe Befehl mehrmals ausgeführt wird. Es ist ein 冪 etc.

Wenn man so denkt, stellt sich heraus, dass ** POST = CREATE = non- 冪 usw. ** / ** PUT = UPDATE = 冪 usw. ** angemessen ist.

REST-API-Fix

Basierend auf dem Obigen wurde es wie folgt modifiziert.

Vor der Korrektur


@RequestMapping("/simple")
class SimpleController {

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

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

Überarbeitet


@RequestMapping("/messages")
class SimpleController {

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

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

Zusammenfassung / Rückblick

Dieses Mal habe ich "einfach" über das Design der REST-API gesprochen. Genau genommen reicht das nicht aus. Es gibt noch viele Dinge zu beachten, wie API-Versionierung, Layering, Sammlungsdarstellung und Statuscode.

Dieses Mal habe ich es vorerst als das Minimum angesehen, einfach zu denken und zu machen.

In Zukunft möchte ich das API-Design überdenken, wenn ich über das Design von Microservices spreche.

Diese Quelle

Recommended Posts

Feder mit Kotorin --4 REST API Design
Feder mit Kotorin --5 Aktuator
Frühling mit Kotorin ―― 1. SPRING INITIALIZR
Frühling mit Kotorin --- 8. Aufbewahrungsschicht
Feder mit Kotorin --6 Asynchrone Verarbeitung
Feder mit Kotorin ―― 7. Serviceschicht
REST-API-Test mit REST Assured
API mit Spring + Vue.js verknüpfen
Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
[Spring Boot] Benutzerinformationen mit Rest API abrufen (Anfänger)
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 2).
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 1).
REST-API-Test mit REST Assured Part 2
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Frühling mit Kotorin ―― 9. Datenbankmigration ―― Flyway
Implementieren Sie die REST-API mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
[Anfänger] Versuchen Sie, die REST-API für die Todo-App mit Spring Boot zu schreiben
Feder mit Kotorin --2 RestController und Datenklasse
Erstellen Sie eine REST-API mit Apache2 + Passenger + Sinatra.
Konfigurieren Sie Microservices mit Spring Cloud (4): API Gateway
Frühling mit Kotorin - 8 Repository-Schicht - Ergänzung: H2-Datenbank
Erstellen Sie einen Web-API-Server mit Spring Boot
Kompatibel mit Android 10 (API 29)
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 2
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Feder mit Kotorin ―― 3. Auslassen von Wellenklammern aus der Funktion
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Selbstgemachte Validierung mit Spring
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 1
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein
Mit Kotorin ―― 7. Scoping-Funktion
Mit Spring Boot herunterladen
Lassen Sie uns herausfinden, wie Sie mit Request Body mit der REST-API von Spring Boot empfangen können
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①
Versuchen Sie, die Springcode-Such-API mit Spring Boot aufzurufen
Was ich mit der Redmine REST API süchtig gemacht habe
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Java-Konfiguration mit Spring MVC
Erstellen Sie eine XML-RPC-API mit Wicket
Testen Sie die Web-API mit junit
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Verwenden Sie die Bulk-API mit RestHighLevelClient
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Anmeldefunktion mit Spring Security
Einführung in die EHRbase 2-REST-API
Verwenden von Mapper mit Java (Spring)
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot