Postman Chrome: Apa perbedaan antara form-data, x-www-form-urlencoded dan raw

222

Saya menggunakan ekstensi Chrome tukang pos untuk menguji layanan web.

Ada tiga opsi yang tersedia untuk input data.

Saya kira itu raw ini untuk mengirim JSON.

Apa perbedaan antara dua lainnya, form-datadan x-www-form-urlencoded?

Rohan
sumber
11
Pada hari ini ada opsi ke-4 juga untuk mengirim data dalam alat tukang pos - binary.
RBT

Jawaban:

237

Ini adalah berbagai jenis konten formulir yang ditentukan oleh W3C. Jika Anda ingin mengirim data teks / ASCII sederhana, maka x-www-form-urlencoded akan berfungsi. Ini standarnya.

Tetapi jika Anda harus mengirim teks non-ASCII atau data biner besar, form-data adalah untuk itu.

Anda dapat menggunakan Raw jika Anda ingin mengirim teks biasa atau JSON atau jenis string lainnya. Seperti namanya, Postman mengirim data string mentah Anda karena tanpa modifikasi. Jenis data yang Anda kirim dapat diatur dengan menggunakan header tipe konten dari drop down.

Biner dapat digunakan ketika Anda ingin melampirkan data non-tekstual ke permintaan, misalnya file video / audio, gambar, atau file data biner lainnya.

Lihat tautan ini untuk bacaan lebih lanjut: Formulir dalam dokumen HTML

Basant Singh
sumber
bagaimana dengan biner?
RBT
saya punya formulir yang memiliki 4 bidang teks dan 1 bidang unggahan file sekarang, tolong sarankan saya opsi mana (formulir-data atau x-www-form-urlencoded) yang akan digunakan untuk mengirimkan nilai 5 bidang ini pada tukang pos? Terima kasih sebelumnya.
Kamlesh
@Kamlesh, maaf atas jawaban yang terlambat, bidang kunci formulir-data di Postman memiliki dropdown di mana Anda dapat memilih apakah itu bidang teks atau file. Anda dapat mengaturnya ke file dan kemudian menelusuri file untuk dilampirkan ke tubuh. Semoga itu bisa membantu.
Basant Singh
87

Ini menjelaskan lebih baik: Postman docs

Minta badan

Saat membangun permintaan, Anda akan banyak berurusan dengan editor badan permintaan. Tukang pos memungkinkan Anda mengirim hampir semua jenis permintaan HTTP (Jika Anda tidak dapat mengirim sesuatu, beri tahu kami!). Editor tubuh dibagi menjadi 4 area dan memiliki kontrol yang berbeda tergantung pada tipe tubuh.

formulir-data

multipart / form-data adalah penyandian standar yang digunakan formulir web untuk mentransfer data.Ini mensimulasikan mengisi formulir di situs web, dan mengirimkannya. Editor formulir-data memungkinkan Anda mengatur pasangan kunci / nilai (menggunakan editor nilai-kunci) untuk data Anda. Anda juga dapat melampirkan file ke suatu tombol. Perhatikan bahwa karena batasan spesifikasi HTML5, file tidak disimpan dalam riwayat atau koleksi. Anda harus memilih file lagi pada saat mengirim permintaan.

urlencoded

Pengkodean ini sama dengan yang digunakan dalam parameter URL. Anda hanya perlu memasukkan pasangan kunci / nilai dan tukang pos akan menyandikan kunci dan nilai dengan benar. Perhatikan bahwa Anda tidak dapat mengunggah file melalui mode penyandian ini. Mungkin ada beberapa kebingungan antara formulir-data dan urlencode jadi pastikan untuk memeriksa dengan API Anda terlebih dahulu.

mentah

Permintaan mentah dapat berisi apa saja. Tukang pos tidak menyentuh string yang dimasukkan dalam editor mentah kecuali mengganti variabel lingkungan. Apa pun yang Anda masukkan ke dalam area teks akan dikirim dengan permintaan. Editor mentah memungkinkan Anda mengatur jenis pemformatan bersama dengan tajuk yang benar yang harus Anda kirim dengan tubuh mentah. Anda dapat mengatur header Tipe Konten secara manual juga. Biasanya, Anda akan mengirim data XML atau JSON di sini.

biner

data biner memungkinkan Anda mengirim hal-hal yang tidak dapat Anda masukkan di tukang pos. Misalnya, file gambar, audio atau video. Anda dapat mengirim file teks juga. Seperti yang disebutkan sebelumnya di bagian formulir-data, Anda harus memasang kembali file jika Anda memuat permintaan melalui sejarah atau koleksi.

MEMPERBARUI

Seperti yang ditunjukkan oleh VKK , spesifikasi WHATWG mengatakan urlencoded adalah tipe penyandian default untuk formulir.

Nilai default yang tidak valid untuk atribut ini adalah status aplikasi / x-www-form-urlencoded. Nilai default yang hilang untuk atribut enctype juga status aplikasi / x-www-form-urlencoded.

avck
sumber
5
Dok tukang pos salah. WHATWG's HTML5 spec tersedia di html.spec.whatwg.org/multipage/… jelas mendefinisikan nilai default "application / x-www-form-urlencoded" untuk atribut enctype dari elemen form. Dengan kata lain "application / x-www-form-urlencoded" adalah penyandian default (dalam istilah HTTP Content-Type) yang digunakan formulir web untuk mentransfer data, bukan multipart / formulir-data. Untuk mengirim permintaan posting HTTP tentang pengiriman formulir dengan Tipe Konten data multi-formulir, seseorang harus secara eksplisit menentukan ini sebagai nilai enctype.
VKK
Jadi apa perbedaan antara form-data (dimasukkan dengan pasangan kunci-nilai di Postman UI) yang dikirim dengan Content-Type: application/jsonheader; dan data mentah dimasukkan sebagai json seperti {foo: bar}dengan Content-Type: application/jsonheader yang sama ?
Inigo
Dengan form-data sebagai pasangan nilai kunci tipe konten adalah multipart form-data bahkan ketika Anda menentukan header & dengan tipe konten mentah akan berupa teks atau apa pun yang Anda tentukan dalam header.
avck
20

multipart / formulir-data

Catatan. Silakan berkonsultasi dengan RFC2388 untuk informasi tambahan tentang unggahan file, termasuk masalah kompatibilitas ke belakang, hubungan antara "multipart / formulir-data" dan jenis konten lainnya, masalah kinerja, dll.

Silakan baca lampiran untuk informasi tentang masalah keamanan untuk formulir.

Jenis konten "application / x-www-form-urlencoded" tidak efisien untuk mengirim sejumlah besar data biner atau teks yang mengandung karakter non-ASCII. Jenis konten "multipart / formulir-data" harus digunakan untuk mengirimkan formulir yang berisi file, data non-ASCII, dan data biner.

Jenis konten "multipart / formulir-data" mengikuti aturan semua aliran data MIME multipart seperti yang diuraikan dalam RFC2045 . Definisi "multipart / formulir-data" tersedia di registri [IANA].

Pesan "multipart / formulir-data" berisi serangkaian bagian, masing-masing mewakili kontrol yang berhasil. Bagian dikirim ke agen pemrosesan dalam urutan yang sama kontrol yang sesuai muncul dalam aliran dokumen. Batas bagian tidak boleh terjadi di salah satu data; bagaimana ini dilakukan terletak di luar ruang lingkup spesifikasi ini.

Seperti semua jenis multipart MIME, setiap bagian memiliki header "Tipe-Konten" opsional yang secara default adalah "teks / polos". Agen pengguna harus menyediakan tajuk "Tipe Konten", disertai dengan parameter "rangkaian karakter".

application / x-www-form-urlencoded

Ini adalah tipe konten default. Formulir yang dikirimkan dengan tipe konten ini harus dikodekan sebagai berikut:

Nama dan nilai kontrol diloloskan. Karakter spasi diganti dengan +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ', tanda persen dan dua digit heksadesimal yang mewakili kode ASCII karakter. Jeda baris direpresentasikan sebagai pasangan "CR LF" (yaitu, %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by= 'dan pasangan nama / nilai dipisahkan satu sama lain oleh `&'.

application/x-www-form-urlencodedisi pesan HTTP yang dikirim ke server pada dasarnya adalah satu string kueri raksasa - pasangan nama / nilai dipisahkan oleh ampersand (&), dan nama dipisahkan dari nilai dengan simbol sama dengan (=). Contohnya adalah:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

The jenis konten "application / x-www-form-urlencoded" tidak efisien untuk mengirimkan sejumlah besar data biner atau teks yang berisi karakter non-ASCII. Jenis konten "multipart / formulir-data" harus digunakan untuk mengirimkan formulir yang berisi file, data non-ASCII, dan data biner.

Mohideen bin Mohammed
sumber
15

Berikut adalah beberapa contoh tambahan untuk melihat teks mentah yang dikirimkan oleh tukang pos dalam permintaan. Anda dapat melihat ini dengan membuka konsol Postman:

masukkan deskripsi gambar di sini

formulir-data

Header

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

Tubuh

key1=value1key2=value2

x-www-form-urlencoded

Header

Content-Type: application/x-www-form-urlencoded

Tubuh

key1=value1&key2=value2

Teks mentah / polos

Header

Content-Type: text/plain

Tubuh

This is some text.

Johnny mentah

Header

Content-Type: application/json

Tubuh

{"key1":"value1","key2":"value2"}
Suragch
sumber