美文网首页
axios中Accept, content-type

axios中Accept, content-type

作者: sisselxie | 来源:发表于2020-12-24 10:08 被阅读0次

HTTP协议中的Accept与Content-Type的区别

HTTP协议的内容,其中,我们经常会用到 Accept 与 Content-Type,那么这两者有什么区别和联系呢?

  1. 类型不同

类型不同Accept属于请求头, Content-Type属于实体头。
Http报头分为通用报头,请求报头,响应报头和实体报头。

请求方的HTTP报头结构:通用报头|请求报头|实体报头
响应方的HTTP报头结构:通用报头|响应报头|实体报头

  1. 作用不同

Accept代表发送端(客户端)希望接受的数据类型。 比如:Accept:text/xml; 代表客户端希望接受的数据类型是xml类型。

Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。 比如:Content-Type:text/html; 代表发送端发送的数据格式是html。

二者合起来, Accept:text/xml; Content-Type:text/html ,即代表希望接受的数据类型是xml格式,本次请求发送的数据的数据格式是html。

content-type application/x-www-form-urlencoded & application/json

前端向后端传输数据时,如果是get传输,直接传在url后;如果是post传输,则在请求体body中传输。

body中的数据格式又有两种,一种是 json 数据格式,另一种是 字符串。具体要用哪种格式取决于后端入参的格式。

如果后端接收json数据类型,post 的 headers 需要设置 { ‘content-type’: ’application/json’ },传给后端的数据就形如 { ‘name’:’edward’, ‘age’:’25’ }

如果后端接收的是(表单)字符串类型,post 的 headers 需设置 { ‘content-type’: ’application/x-www-form-urlencoded’ },

,传输给后端的数据就形如 ‘name=edward&age=25’

项目开发中后端get请求需要接受(表单)字符串类型 但是post请求需要接手application/json,且后端返回类型不确定即可为字符串,也有可能json,axios的配置时的坑

axios中data不设置时,headers 设置content-type不生效,后端返回类型不确定需要设置 'Accept':'/'

    let config;
    if(method==="GET"){
        config = {
          method: 'get',
          timeout: 120000, //上传较大图片需要响应较长时间
          url: getFastUrl() + url,
          data: {},
          withCredentials: false,
          headers: {
            'Accept':'*/*',
            'Content-Type': 'application/x-www-form-urlencoded'
          }
        }
    }else{
      config = {
        method: method,
        timeout: 120000, //上传较大图片需要响应较长时间
        url: url,
        data: method === "POST" || method === "PUT" ? params : null,
        withCredentials: false,
        headers: {
          // 'Content-Type': 'application/x-www-form-urlencoded'
          "Content-Type": "application/json"
        }
      }
    }

相关文章

网友评论

      本文标题:axios中Accept, content-type

      本文链接:https://www.haomeiwen.com/subject/iyfdvktx.html