2017-12-28 9 views
0

Ich habe eine Frage im Zusammenhang mit RESTful Api-Design. Ich habe eine RESTful API zu GET/POST/PUT Ressource (Benutzer). Ich bin mir nicht ganz klar, ob mein DesignREST API DESIGN - Get/Post/Eine Ressource durch REST mit verschiedenen Parametern

Hier korrekt ist ein Beispiel

/users: 
    get:  
    queryParameters: 
     joinDate: 
     displayName: get all used based on join date   
    post: 
    displayName: Add new user 

/{lastName}: 
    get: 
     displayName: Get all users based on last name 
/{id}: 
    put: 
     displayName: Update a particular user 

Ich wollte nur wissen, ob das obige Design gut ..

Alle Hilfe dankbar!

Antwort

0

CRUD (Erstellen, Lesen, Aktualisieren, Löschen) bedeutet die grundlegenden Vorgänge in einem Datenrepository. Sie behandeln Datensätze oder Datenobjekte direkt; Abgesehen von diesen Operationen sind die Datensätze passive Entitäten. Normalerweise sind es nur Datenbanktabellen und Datensätze.

REST hingegen arbeitet mit Ressourcendarstellungen, die jeweils durch eine URL identifiziert werden. Dies sind typischerweise keine Datenobjekte, sondern komplexe Abstraktionen von Objekten.

Zum Beispiel kann eine Ressource ein Benutzerkommentar sein. Das bedeutet nicht nur einen Datensatz in einer "Kommentar" -Tabelle, sondern auch seine Beziehungen mit der "Benutzer" -Ressource, dem Post, der kommentiert, vielleicht ein anderer Kommentar, den er beantwortet.

Die Bedienung des Kommentars ist keine primitive Datenbankoperation, sie kann erhebliche Nebeneffekte haben, wie das Auslösen eines Alarms für das ursprüngliche Poster oder die Neuberechnung einiger spielartiger 'Punkte' oder die Aktualisierung eines 'Follower-Streams'.

Außerdem enthält eine Ressourcendarstellung Hypertext (überprüfen Sie das HATEOAS-Prinzip), so dass der Designer Beziehungen zwischen Ressourcen ausdrücken oder den REST-Client im Arbeitsablauf einer Operation leiten kann.

Kurz gesagt, CRUD ist ein Set primitive Operationen (vor allem für Datenbanken und statische Datenspeicher), während REST ist eine sehr hohe API-Stil (vor allem für Webservices und andere "Live" -Systeme).

Die erste manipuliert Daten, die andere interagiert mit einem funktionierenden System.

to Learn more about CRUD

so aus meiner Sicht sind Sie völlig richtig!

+0

Vielen Dank Kareem. –

+0

Danke Kareem. Mein Tool beschwert sich, wenn es zwei Pfade/{lastName}: und /{id}: unter 1 Ressourcenbenutzern gibt, weil der Server nicht weiß, in welchen Pfad er die Anforderung umleiten soll. Ich bin Verschieben Sie die Put-Methode unter Ressourcenpfad wie unten, hoffe, das ist richtig? /users: erhalten: Query: joinDate: display: alle basierend gewöhnungs auf Beitrittsdatum Beitrag: display: neuer Benutzer Put hinzufügen: display: Aktualisieren eines bestimmten Benutzers /{nachName}: erhalten: display: Holen Sie sich alle Benutzer basierend auf dem Nachnamen –

0

Ich würde das tun.

POST /users 
    Creates a single user 

GET /users 
    Reads all users 

GET /users;joinDate=yyyy-MM-dd 
    Reads all users whose join date matches to given 

GET /users;joinDate=yyyy-MM-dd;lastName=Some 
    Reads all users whose join date matches to given 
    and whose last name matches to given 

GET /users/{userId} 
    Reads a user whose {id} matches to given 

GET /users;joinDate=yyyy-MM-dd/{userId} 
    Reads a user whose id matches to given 
    among those who joined on specified day. 
Verwandte Themen