Was ist der Unterschied zwischen
request.ContentType = "application / json; charset = utf-8";
und
webRequest.ContentType = "application / x-www-form-urlencoded";
Was ist der Unterschied zwischen
request.ContentType = "application / json; charset = utf-8";
und
webRequest.ContentType = "application / x-www-form-urlencoded";
Antworten:
Der erste Fall besteht darin, dem Webserver mitzuteilen, dass Sie JSON-Daten wie folgt veröffentlichen:
{ Name : 'John Smith', Age: 23}
Die zweite Option teilt dem Webserver mit, dass Sie die Parameter in der URL wie folgt codieren:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
würde die Verwendung den Server verwirren (in meinem Fall Elixier mit Poison) und zu einer unangemessenen Analyse des Objekts führen (das verschachtelte Array wurde irgendwie konvertiert) von Objekten zu einer Karte anstelle einer Liste). Unter Verwendung application/json
sollte die richtige Wahl in diesem Fall sein.
webRequest.ContentType = "application / x-www-form-urlencoded";
Woher kommt die Anwendung / x-www-form-urlencoded Name ?
Wenn Sie eine HTTP- GET- Anforderung senden , können Sie die Abfrageparameter wie folgt verwenden:
http://example.com/path/to/page
Name = Frettchen & Farbe = lila
Der Inhalt der Felder wird als Abfragezeichenfolge codiert. Dasapplication/x-www-form-
urlencoded
Name des 'stammt vom vorherigen URL-Abfrageparameter, aber die Abfrageparameter befinden sich dort, wo sich der Anfragetext anstelle der URL befindet.
Die gesamten Formulardaten werden als lange Abfragezeichenfolge gesendet. Die Abfragezeichenfolge enthält Name-Wert- Paare, die durch & Zeichen getrennt sind
zB Feld1 = Wert1 & Feld2 = Wert2
Es kann eine einfache Anfrage sein, die einfach genannt wird - Lösen Sie keine Preflight-Prüfung aus
Einfache Anfrage muss einige Eigenschaften haben. Weitere Informationen finden Sie hier . Eine davon ist, dass für den Content-Type-Header für einfache Anforderungen nur drei Werte zulässig sind
3.Für meist flache Parameterbäume hat sich application / x-www-form-urlencoded bewährt.
request.ContentType = "application / json; charset = utf-8";
axios und Superagent , zwei der beliebtesten npm HTTP - Bibliotheken, die Arbeit mit JSON Körper standardmäßig.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Wenn die Anforderung keine einfache Anforderung ist , sendet der Browser automatisch eine HTTP-Anforderung vor der ursprünglichen Anforderung mit der OPTIONS- Methode, um zu überprüfen, ob das Senden der ursprünglichen Anforderung sicher ist. Wenn es in Ordnung ist, senden Sie die tatsächliche Anfrage. Weitere Informationen finden Sie hier .
x-www-form-urlencoded
für AJAX-Anfragen wie Abstimmungen usw. verwendet werden. Die zurückgesendete Antwort lautetJSON
. Ich würde denken, dass es besser ist, ein symmetrisches Anforderungs- / Antwortpaar zu haben, dh beide JSON.