zoukankan      html  css  js  c++  java
  • 08- application/x-www-form-urlencoded 与 application/json区别 / querystring

    两种请求方式对服务器端都没什么影响

    application/x-www-form-urlencoded方式是比较老的一种方式,这种方式的好处就是浏览器都支持,

    在请求发送过程中会对数据进行序列化处理,以键值对形式?key1=value1&key2=value2的方式发送到服务器,


    application/json,随着json规范的越来越流行,并且浏览器支持程度原来越好,许多开发人员易application/json作为请求content-type,

    告诉服务器请求的主题内容是json格式的字符串,服务器端会对json字符串进行解析,

    这种方式的好处就是前端人员不需要关心数据结构的复杂度,

    只要是标准的json格式就能提交成功,application/json数据格式越来越得到开发人员的青睐

    举例. 向服务器发送数据 {a:"a", b:"b"}

    如果头的格式是application/x-www-form-urlencoded,  则ajax.send("a='a'&b='b'");

    如果头的格式是application/json, 则ajax.send(JSON.stringify(data));

    orm的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary).



    总结:

    1).ajax 如果发送的是json字符串,服务端接收时必须要使用@RequestBody注解。始终记住,json字符串,"application/json”,@RequestBody 这三者之间是一一对应的,要有都有,要没有都没有。
    2).如果发送的是json对象,contentType不能设置为"application/json”,需使用默认的类型(application/x-www-form-urlencoded,为什么呢?这种类型最后还是会把json对象类型的参数转为user=username&pass=password这种形式后再发送,需要明白一点:这种转换时只能识别json对象类型,不能识别json字符串类型)。


    在项目联调中,由于后端要求传输数据的headers为application/x-www-form-urlencoded方式,解决方法如下:


     

     

     


    qs库和querystring的区别?

    简单来说就是qs可以转换任意类json格式的数据,而querystring只能转换平面数据结构,qs的功能更加强大

     

     

     

  • 相关阅读:
    PAT (Advanced Level) 1086. Tree Traversals Again (25)
    PAT (Advanced Level) 1085. Perfect Sequence (25)
    PAT (Advanced Level) 1084. Broken Keyboard (20)
    PAT (Advanced Level) 1083. List Grades (25)
    PAT (Advanced Level) 1082. Read Number in Chinese (25)
    HDU 4513 吉哥系列故事――完美队形II
    POJ Oulipo KMP 模板题
    POJ 3376 Finding Palindromes
    扩展KMP
    HDU 2289 Cup
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14720392.html
Copyright © 2011-2022 走看看