Postacı Chrome: Form-veri, x-www-form-urlencoded ve raw arasındaki fark nedir


222

Bir web hizmetini test etmek için Postman Chrome uzantısını kullanıyorum.

Veri girişi için üç seçenek vardır.

Sanırım rawJSON göndermek için.

Diğer ikisi arasındaki fark nedir form-datave x-www-form-urlencoded?


11
Bugün itibariyle postacı aracına veri göndermek için de 4. seçenek var binary.
RBT

Yanıtlar:


237

Bunlar, W3C tarafından tanımlanan farklı Form içerik türleridir. Basit metin / ASCII verileri göndermek istiyorsanız, x-www-form-urlencoded çalışır. Bu varsayılan ayardır.

Ancak ASCII olmayan metin veya büyük ikili veri göndermek zorundaysanız, form verileri bunun içindir.

Düz metin veya JSON veya başka bir dize göndermek istiyorsanız Raw'u kullanabilirsiniz . Adından da anlaşılacağı gibi, Postacı ham dize verilerinizi değişiklik yapmadan olduğu gibi gönderir. Gönderdiğiniz veri türü, açılır menüden içerik türü üstbilgisi kullanılarak ayarlanabilir.

İkili , bir video / ses dosyası, görüntüler veya başka bir ikili veri dosyası gibi isteğe metinsel olmayan veriler eklemek istediğinizde kullanılabilir.

Daha fazla okuma için bu bağlantıya bakın: HTML belgelerindeki formlar


ikili ne olacak?
RBT

4 metin alanları ve 1 dosya yükleme alanı şimdi bir form var şimdi bana postacı bu 5 alan değerini göndermek için kullanılacak hangi seçenek (form-veri veya x-www-form-urlencoded) önermek lütfen? Şimdiden teşekkürler.
Kamlesh

@Kamlesh, geç cevap için özür dilerim, Formman'daki form verilerinin anahtar alanı, bir metin alanı veya dosya olup olmadığını seçebileceğiniz bir açılır menüye sahiptir. Dosyaya ayarlayabilir ve daha sonra gövdeye eklemek için bir dosyaya göz atabilirsiniz. Umarım yardımcı olur.
Basant Singh

88

Bu daha iyi açıklıyor: Postacı belgeleri

Talep gövdesi

İstekleri oluştururken, istek gövdesi editörü ile çok uğraşıyorsunuz. Postacı neredeyse her türlü HTTP isteğini göndermenizi sağlar (Bir şey gönderemiyorsanız bize bildirin!). Gövde editörü 4 alana ayrılmıştır ve gövde tipine bağlı olarak farklı kontrollere sahiptir.

form verisi

multipart / form-data, bir web formunun veri aktarmak için kullandığı varsayılan kodlamadır. Bu, bir web sitesinde bir form doldurmayı ve göndermeyi simüle eder. Form-veri düzenleyicisi, verileriniz için anahtar / değer çiftlerini (anahtar / değer düzenleyicisini kullanarak) ayarlamanıza olanak tanır. Bir anahtara da dosya ekleyebilirsiniz. HTML5 spesifikasyonunun kısıtlamaları nedeniyle dosyaların geçmişte veya koleksiyonlarda saklanmadığını unutmayın. İstek gönderilirken dosyayı tekrar seçmeniz gerekir.

urlencoded

Bu kodlama, URL parametrelerinde kullanılan kodlamayla aynıdır. Anahtar / değer çiftlerini girmeniz yeterlidir, Postacı anahtarları ve değerleri doğru şekilde kodlar. Bu kodlama moduyla dosya yükleyemeyeceğinizi unutmayın. Form verileri ve urlencoded arasında bir karışıklık olabilir, bu yüzden önce API'nıza danışın.

çiğ

Ham bir istek herhangi bir şey içerebilir. Postacı, ortam değişkenlerini değiştirmek dışında ham düzenleyiciye girilen dizeye dokunmaz. Metin alanına koyduğunuz her şey istekle birlikte gönderilir. Ham düzenleyici, biçimlendirme türünü ve ham gövdeyle birlikte göndermeniz gereken doğru üstbilgiyi ayarlamanıza olanak tanır. İçerik Türü başlığını da manuel olarak ayarlayabilirsiniz. Normalde, buraya XML veya JSON verileri gönderirsiniz.

ikili

İkili veriler, Postacı'ya giremediğiniz şeyleri göndermenizi sağlar. Örneğin, görüntü, ses veya video dosyaları. Metin dosyaları da gönderebilirsiniz. Form-veri bölümünde daha önce de belirtildiği gibi, geçmiş veya koleksiyon yoluyla bir istek yüklüyorsanız dosyayı yeniden bağlamanız gerekir.

GÜNCELLEME

Tarafından sivri dışarı olarak VKK , WHATWG spec urlencoded formlar için varsayılan kodlama türü olduğunu söylüyorlar.

Bu öznitelikler için varsayılan değer, application / x-www-form-urlencoded durumudur. Enctype özniteliği için varsayılan değer eksik olan uygulama / x-www-form-urlencoded durumudur.


5
Postacı dokümanı yanlış. Html.spec.whatwg.org/multipage/… adresinde bulunan WHATWG'nin HTML5 özellikleri, form öğesinin şifreleme özelliği için varsayılan bir "application / x-www-form-urlencoded" değerini tanımlar. Diğer bir deyişle, "application / x-www-form-urlencoded", bir web formunun çok parçalı / form verisini değil, veri aktarmak için kullandığı varsayılan kodlamadır (HTTP terimleri İçerik Tipi). Form gönderimi üzerine, çok parçalı / form verilerinin İçerik Türü ile bir HTTP posta isteği göndermek için, bunu açık bir şekilde enctype değeri olarak belirtmek gerekir.
VKK

Başlık ile gönderilen form verileri (Postacı Arayüzünde anahtar / değer çiftleriyle girilir) arasındaki fark nedir Content-Type: application/json; ve aynı başlık gibi json olarak girilen ham veriler ? {foo: bar}Content-Type: application/json
Inigo

Anahtar / değer çiftleri olarak form verisi ile, başlıkları belirtseniz bile içerik türü çok parçalı form verisidir ve ham içerik türü ile metin veya başlıklarda belirttiğiniz her şey olacaktır.
avck

20

Çok parçalı / form-

Not. Dosya yüklemeleri hakkında geriye dönük uyumluluk sorunları, "çok parçalı / form verileri" ile diğer içerik türleri, performans sorunları vb. Arasındaki ilişki de dahil olmak üzere ek bilgi için lütfen RFC2388'e başvurun .

Formlarla ilgili güvenlik sorunları hakkında bilgi için lütfen eke bakın.

"Application / x-www-form-urlencoded" içerik türü, büyük miktarlarda ikili veri veya ASCII olmayan karakterler içeren metin göndermek için yetersizdir. "Çok bölümlü / form verisi" içerik türü, dosyaları, ASCII olmayan verileri ve ikili verileri içeren formları göndermek için kullanılmalıdır.

"Çok bölümlü / form verileri" içerik türü, RFC2045'te ana hatlarıyla belirtildiği gibi tüm çok bölümlü MIME veri akışlarının kurallarına uyar . "Çok bölümlü / form-veri" tanımı [IANA] kayıt defterinde mevcuttur.

"Çok parçalı / form verisi" mesajı, her biri başarılı bir kontrolü temsil eden bir dizi parça içerir. Parçalar, karşılık gelen kontrollerin belge akışında göründüğü sırayla işleme ajanına gönderilir. Verilerin hiçbirinde parça sınırları oluşmamalıdır; bunun nasıl yapılacağı bu şartnamenin kapsamı dışındadır.

Tüm çok parçalı MIME türlerinde olduğu gibi, her bölüm varsayılan olarak "metin / düz" olarak ayarlanan isteğe bağlı bir "İçerik Türü" başlığına sahiptir. Kullanıcı aracıları, "charset" parametresiyle birlikte "Content-Type" başlığını sağlamalıdır.

Uygulama / x-www-form-urlencoded

Bu, varsayılan içerik türüdür. Bu içerik türüyle gönderilen formlar aşağıdaki gibi kodlanmalıdır:

Kontrol adları ve değerleri kaçtı. Boşluk karakterleri +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ', bir yüzde işareti ve karakterin ASCII kodunu temsil eden iki onaltılık basamak ile değiştirilir. Satır sonları "CR LF" çiftleri olarak temsil edilir (yani, %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by= 've ad / değer çiftleri birbirinden `` &' 'ile ayrılır.

application/x-www-form-urlencodedsunucuya gönderilen HTTP iletisinin gövdesi temelde bir dev sorgu dizesidir - ad / değer çiftleri ve işareti (&) ile ayrılır ve adlar eşittir simgesiyle (=) değerlerden ayrılır. Buna bir örnek:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

İçerik türü "application /-form-urlencoded x-www" ASCII olmayan karakterler içeren ikili veri veya metin büyük miktarlarda göndermek için verimsizdir. "Çok bölümlü / form verisi" içerik türü, dosyaları, ASCII olmayan verileri ve ikili verileri içeren formları göndermek için kullanılmalıdır.


15

İşte Postacı'nın istekte ilettiği ham metni görmek için bazı ek örnekler. Postacı konsolunu açarak bunu görebilirsiniz:

resim açıklamasını buraya girin

form verisi

Başlık

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

Vücut

key1=value1key2=value2

x-www-form-urlencoded

Başlık

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

Vücut

key1=value1&key2=value2

Ham metin / düz

Başlık

Content-Type: text/plain

Vücut

This is some text.

Ham json

Başlık

Content-Type: application/json

Vücut

{"key1":"value1","key2":"value2"}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.