Eine REST-API kann an mehreren Stellen Argumente enthalten:
- Im Anforderungshauptteil - Als Teil eines JSON-Hauptteils oder eines anderen MIME-Typs
- In der Abfragezeichenfolge - z
/api/resource?p1=v1&p2=v2
- Im Rahmen des URL-Pfades - z
/api/resource/v1/v2
Was sind die Best Practices und Überlegungen zur Auswahl zwischen 1 und 2 oben?
2 gegen 3 wird hier behandelt .
Antworten:
Normalerweise wird der Inhaltskörper für die Daten verwendet, die zum / vom Server hochgeladen / heruntergeladen werden sollen, und die Abfrageparameter werden verwendet, um die genauen angeforderten Daten anzugeben. Wenn Sie beispielsweise eine Datei hochladen, geben Sie den Namen, den MIME-Typ usw. im Hauptteil an. Wenn Sie jedoch eine Liste von Dateien abrufen, können Sie die Abfrageparameter verwenden, um die Liste nach einer Eigenschaft der Dateien zu filtern. Im Allgemeinen sind die Abfrageparameter Eigentum der Abfrage und nicht der Daten.
Natürlich ist dies keine strenge Regel - Sie können sie so implementieren, wie Sie es für angemessener halten / für Sie arbeiten.
Vielleicht möchten Sie auch den Wikipedia-Artikel über Abfragezeichenfolgen lesen , insbesondere die ersten beiden Absätze.
quelle
Ich gehe davon aus, dass Sie über POST / PUT-Anfragen sprechen. Semantisch sollte der Anforderungshauptteil die Daten enthalten, die Sie veröffentlichen oder patchen.
Die Abfragezeichenfolge dient als Teil der URL (einer URI) dazu, zu identifizieren, welche Ressource Sie veröffentlichen oder patchen.
Sie haben nach Best Practices gefragt. Die folgende Semantik gehört mir. Natürlich sollte die Verwendung Ihrer Faustregeln funktionieren, insbesondere wenn das von Ihnen verwendete Webframework dies in Parameter abstrahiert .
Sie wissen am meisten:
quelle
Das Folgende sind meine Faustregeln ...
Wann man den Körper benutzt:
Wann wird die Abfragezeichenfolge verwendet?
curl
application/octet-stream
Beachten Sie, dass Sie mischen und abgleichen können - fügen Sie die allgemeinen, diejenigen, die debuggbar sein sollten, in die Abfragezeichenfolge ein und werfen Sie den Rest in den json.
quelle