2017-11-06 2 views
0

Angenommen, Sie erhalten einige mit Studenten verknüpfte Metadaten, und Sie entwerfen einen REST-Webdienst dafür. Natürlich könnten Sie für jeden Schüler ein GET machen, aber Sie würden es vorziehen, alle Schüler auf einmal zu bekommen. Angenommen, die IDs und die Anzahl der Studenten sind "zu lang". Das heißt, dass wir möglicherweise 200 Studenten mit einer ID-Länge von 32 Zeichen abfragen, weit über eine sichere URL-Länge hinaus.Benennen eines REST-Dienstes GET mit umfangreicher Parameterliste

Wie würden Sie das überwinden?

Eine Methode besteht darin, einen PUT oder einen POST zu verwenden und eine Datenstruktur mit den Studenten-IDs zu übergeben. Welches würdest du nehmen?

Wenn Sie diese Methode wählen, was würden Sie solch einen Service nennen?

Was sind andere Optionen?

+0

Warum sollten Sie jemals Daten über 200 ** spezifische ** Schüler auf einmal abrufen müssen? Was ist eigentlich der Kontext? –

Antwort

1

GET-Ting eins nach dem anderen ist sicherlich keine sehr gute Lösung.

Ich würde POST verwenden, mit den Studenten-IDs in einem JSON-Array. So etwas wie

[{"id":"32charstudentId1"}, 
{"id":"32charstudentId2"}, 
{"id":"32charstudentId3"}] 

Das ist ziemlich einfach auf dem Back-End iterieren und macht den Job, gut. Und die Antwort so etwas wie

[ 
    { 
    "id":"32charstudentId1", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }, 
    { 
    "id":"32charstudentId2", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }, 
    { 
    "id":"32charstudentId3", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }] 

Der Name des Service wirklich zu Ihnen bietet es hängt davon ab, welchen Nutzen sein könnte. Um generic Sie es einfach wie „FetchStudentDetails“

etwas nennen könnte genauso gut

Ein einfaches Array mit dem Student-IDs arbeiten, denke ich.

Eine (eine Art primitive) Alternative könnte Senden einer POST mit Studenten-IDs in einer Zeichenfolge senden, begrenzt durch ein Trennzeichen Ihrer Wahl, bevorzuge ich das Semikolon (;).

+1

Das ist genau die Lösung, die ich mir ausgedacht habe, es war Teil eines realen Problems, das mir in einer Interviewfrage gestellt wurde. Ich habe das Angebot nicht als "un-kreativ" bezeichnet. Manchmal ist Kreativität in der Softwareentwicklung keine gute Sache, und ich denke, das ist der Fall. Bei einer solchen Benennung dokumentieren Sie selbst, wofür der Dienst gedacht ist, was für mich sehr wünschenswert ist. –

+1

Namen sollten sinnvoll sein, Kreativität bei der Namensgebung spielt für mich keine Rolle. –

+0

Einverstanden! TY für Ihre Eingabe. –

Verwandte Themen