Während des Entwurfs der API mit dem Team wurde ein Vorschlag in Bezug auf einige komplexe Abfrageparameter weitergeleitet, die wir als Objekte, Arrays von Objekten, etc. codiert werden müssen eine Route GET /resource/
und ich möchte eine Reihe von Filtern direkt in den Abfrageparametern anwenden. Die Objektliteral Struktur dieses Filters wäre so etwas wieVerwenden Sie codierte Objektabfrageparameter für GET-Anforderung
filter: {
field1: {
contains: 'value',
notin: ['value2', 'value3']
},
field2: {
greaterThan: 10
}
}
Encoding dies in der URL, über einen Query-String-Parser wie den qs
Knoten Modul sein, das intern Express.js verwendet, würde auf dem Back-End billig sein. Jedoch 1) Die generierte URL ist sehr schwer zu lesen, wenn ein Client eine Verbindung mit der API herstellen möchte, müsste er eine Codierungsbibliothek verwenden und 2) Ich glaube nicht, dass ich jemals die Verwendung von Abfrageparametern wie dieser sah ein bisschen overengineered und ich bin mir nicht sicher, wie es benutzt wird und ob es wirklich sicher ist.
Das obige Beispiel würde Abfrage params wie Ausbeute:
GET /resource/?field1%5Bcontains%5D=value&field1%5Bnotin%5D%5B0%5D=value2&field1%5Bnotin%5D%5B1%5D=value3&field2%5BgreaterThan%5D=10
Ist diese Praxis des Versendens URL Abfrageparameter, die komplexe Objekte haben einige Standards oder Best Practices geschehen sein?