Sto usando l'estensione Postman per Chrome per testare un servizio web.
Sono disponibili tre opzioni per l'immissione dei dati.
Immagino raw
sia per l'invio di JSON.
Qual è la differenza tra gli altri due form-data
e x-www-form-urlencoded
?
Sto usando l'estensione Postman per Chrome per testare un servizio web.
Sono disponibili tre opzioni per l'immissione dei dati.
Immagino raw
sia per l'invio di JSON.
Qual è la differenza tra gli altri due form-data
e x-www-form-urlencoded
?
Risposte:
Questi sono diversi tipi di contenuto del modulo definiti da W3C. Se vuoi inviare semplici dati di testo / ASCII, allora x-www-form-urlencoded funzionerà. Questo è il valore predefinito.
Ma se devi inviare testo non ASCII o dati binari di grandi dimensioni, i dati del modulo sono per questo.
È possibile utilizzare Raw se si desidera inviare testo normale o JSON o qualsiasi altro tipo di stringa. Come suggerisce il nome, Postman invia i tuoi dati di stringa grezzi così come sono senza modifiche. Il tipo di dati che stai inviando può essere impostato usando l'intestazione del tipo di contenuto dal menu a discesa.
Binary può essere utilizzato quando si desidera allegare dati non testuali alla richiesta, ad esempio un file video / audio, immagini o qualsiasi altro file di dati binari.
Fare riferimento a questo collegamento per ulteriori letture: moduli nei documenti HTML
Questo spiega meglio: documenti postino
Corpo della richiesta
Mentre costruisci le richieste, dovresti occuparti molto dell'editor del corpo della richiesta. Postman ti consente di inviare quasi ogni tipo di richiesta HTTP (se non riesci a inviare qualcosa, faccelo sapere!). L'editor del corpo è diviso in 4 aree e ha diversi controlli a seconda del tipo di corpo.
form-data
multipart / form-data è la codifica predefinita utilizzata da un modulo Web per trasferire i dati.Questo simula la compilazione di un modulo su un sito Web e l'invio. L'editor modulo-dati ti consente di impostare coppie chiave / valore (usando l'editor di valori-chiave) per i tuoi dati. Puoi anche allegare file a una chiave. Si noti che a causa delle restrizioni delle specifiche HTML5, i file non vengono archiviati nella cronologia o nelle raccolte. Dovresti selezionare nuovamente il file al momento dell'invio di una richiesta.urlencoded
Questa codifica è uguale a quella utilizzata nei parametri URL. Devi solo inserire le coppie chiave / valore e Postman codificherà correttamente le chiavi e i valori. Si noti che non è possibile caricare file tramite questa modalità di codifica. Potrebbe esserci un po 'di confusione tra i dati del modulo e quelli codificati in url, quindi assicurati di verificare prima con l'API.
crudo
Una richiesta non elaborata può contenere qualsiasi cosa. Postman non tocca la stringa inserita nell'editor non elaborato tranne la sostituzione delle variabili di ambiente. Qualunque cosa tu metta nell'area di testo viene inviata con la richiesta. L'editor non elaborato consente di impostare il tipo di formattazione insieme all'intestazione corretta che è necessario inviare con il corpo non elaborato. Puoi anche impostare l'intestazione Content-Type manualmente. Normalmente, invieresti dati XML o JSON qui.
binario
i dati binari ti consentono di inviare cose che non puoi inserire in Postman. Ad esempio, file di immagini, audio o video. Puoi anche inviare file di testo. Come accennato in precedenza nella sezione dei dati del modulo, è necessario ricollegare un file se si sta caricando una richiesta attraverso la cronologia o la raccolta.
AGGIORNARE
Come sottolineato da VKK , la specifica WHATWG afferma che urlencoded è il tipo di codifica predefinito per i moduli.
Il valore predefinito non valido per questi attributi è lo stato application / x-www-form-urlencoded. Il valore mancante predefinito per l'attributo enctype è anche lo stato application / x-www-form-urlencoded.
Content-Type: application/json
intestazione; e i dati grezzi inseriti come json come {foo: bar}
con la stessa Content-Type: application/json
intestazione?
multipart / form-data
Nota. Consultare RFC2388 per ulteriori informazioni sui caricamenti di file, inclusi problemi di compatibilità con le versioni precedenti, la relazione tra "dati multipart / modulo" e altri tipi di contenuto, problemi di prestazioni, ecc.
Consultare l'appendice per informazioni sui problemi di sicurezza dei moduli.
Il tipo di contenuto "application / x-www-form-urlencoded" non è efficace per l'invio di grandi quantità di dati binari o testo contenente caratteri non ASCII. Il tipo di contenuto "multipart / form-data" deve essere utilizzato per l'invio di moduli che contengono file, dati non ASCII e dati binari.
Il tipo di contenuto "multipart / form-data" segue le regole di tutti i flussi di dati MIME multipart come indicato in RFC2045 . La definizione di "multipart / form-data" è disponibile nel registro [IANA].
Un messaggio "multipart / form-data" contiene una serie di parti, ognuna delle quali rappresenta un controllo riuscito. Le parti vengono inviate all'agente di elaborazione nello stesso ordine in cui i controlli corrispondenti vengono visualizzati nel flusso di documenti. I limiti delle parti non devono verificarsi in nessuno dei dati; come ciò avvenga non rientra nell'ambito di questa specifica.
Come per tutti i tipi MIME multipart, ogni parte ha un'intestazione "Content-Type" opzionale che per impostazione predefinita è "text / plain". Gli interpreti devono fornire l'intestazione "Content-Type", accompagnata da un parametro "charset".
application / x-www-form-urlencoded
Questo è il tipo di contenuto predefinito. I moduli inviati con questo tipo di contenuto devono essere codificati come segue:
I nomi e i valori di controllo sono sottoposti a escape. I caratteri spaziali sono sostituiti da +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
% HH ', un segno di percentuale e due cifre esadecimali che rappresentano il codice ASCII del carattere. Le interruzioni di riga sono rappresentate come coppie "CR LF" (ovvero, le %0D%0A').
The control names/values are listed in the order they appear in the document. The name is separated from the value by
coppie nome / valore sono separate l'una dall'altra da `& '.
application/x-www-form-urlencoded
il corpo del messaggio HTTP inviato al server è essenzialmente una stringa di query gigante: le coppie nome / valore sono separate dalla e commerciale (&) e i nomi sono separati dai valori dal simbolo uguale (=). Un esempio di questo sarebbe:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
Il tipo di contenuto "application / x-www-form-urlencoded" non è efficace per l'invio di grandi quantità di dati binari o testo contenente caratteri non ASCII. Il tipo di contenuto "multipart / form-data" deve essere utilizzato per l'invio di moduli che contengono file, dati non ASCII e dati binari.
Ecco alcuni esempi supplementari per vedere il testo non elaborato che Postman passa nella richiesta. Puoi vederlo aprendo la console di Postman:
Intestazione
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
Corpo
key1=value1key2=value2
Intestazione
Content-Type: application/x-www-form-urlencoded
Corpo
key1=value1&key2=value2
Intestazione
Content-Type: text/plain
Corpo
This is some text.
Intestazione
Content-Type: application/json
Corpo
{"key1":"value1","key2":"value2"}
binary
.