axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

这篇具有很好参考价值的文章主要介绍了axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

axios实现POST/PUT接口入参是 query的形式而非JSON的形式

先看下什么是query的形式入参:

1.常规的GET请求

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

一般是GET请求才会是query string parameters的形式入参

参数是query string parameters的展示,最终效果是拼接到url地址中,如下图所示:

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

2.常规的POST/PUT请求

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

一般是POST/PUT请求才会是request payload的形式入参

参数是request payload的展示,请求头request headers中的content-typeapplication/json

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

3.formData的POST/PUT请求——content-type是multipart/form-data——常用于文件的上传(通过new formData格式上传)

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

参数是form data的展示,请求头request headers中的content-typemultipart/form-data

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用
axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用
此时的处理方法就是:

3.1 入参部分的处理:——需要使用formData添加参数

let formData = new FormData();
formData.append('file', 内容1);
formData.append('id', 内容2);
formData.append('filePath', 内容3);

3.2 接口部分的处理:——接口需要设置请求头'Content-Type': 'multipart/form-data'

uploadImg(data) {
 return axios.request({
   url: '接口地址',
   headers: {
     'Content-Type': 'multipart/form-data'
   },
   method: 'post',
   data
 });
},
将formData作为接口的入参传入 即可实现上面的效果。

4.formData的POST/PUT请求——content-type是application/x-www-form-urlencoded(通过qs实现)

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

参数是form data的展示,请求头request headers中的content-typeapplication/x-www-form-urlencoded

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用
axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

上面的这两种方式都可以实现此功能,第一张图片的实现方式看4步骤,第二张图片的实现方式看5步骤。

接口部分的处理:

4.1 入参需要通过qs.stringify()进行处理

4.2 请求头需要写为'Content-Type': 'application/x-www-form-urlencoded',

UploadContractAgain(params) {
  return request(
    url:'接口地址',
    METHOD.PUT,
    qs.stringify(params),
    {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
    }
  );
},

如果要使用qs则需要先安装querystring插件:

4.3 安装querystring插件——npm install querystring

4.4 querystring模块引入——import querystring from 'querystring'

全部引入的话,则写在main.js中,局部引入的话,则写在单个文件中
比如上面的写法,则直接在当前接口文件中引入即可。

4.5 使用qs.stringify(xxx)的方式处理对象参数为query参数

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用
打印一下对象,及通过qs.stringify(xx)转义后的参数对比:

对象参数:
axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用
通过qs.stringify(x)转义后的参数如下:
axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

5.querystring的POST/PUT请求——content-type是application/x-www-form-urlencoded(通过qs实现)

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

参数是form data的展示,请求头request headers中的content-typeapplication/x-www-form-urlencoded

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

5.1 接口部分的处理方法:

export function postChangeOwner(params) {
    return requestSupplier(
        `api/Supplier/ChangeOwner?${qs.stringify(params)}`,
        METHOD.POST,
        null, 
        {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
        }
    );
}

注意:querystring的入参 一定是要拼接到url地址中的……

formData形式的入参(除文件上传之外的)和querystring的入参,contentType的属性值是一样的,都是application/x-www-form-urlencoded,区别就在于参数是否拼接到url地址中,如果手动拼接到url地址中,则入参会变成querystring中,如果不拼接,则入参会变成formData中。

总结:如果遇到 put/post 请求的query传参,则优先选择 通过qs.stringify(params)转化后拼接到url地址中的方式,上面步骤 4与步骤 5中的都适用,但是如果将qs.stringify(params)转化后的参数作为入参,通过formData的形式传入,则部分接口会报错。

总结:如果遇到 put/post 请求的formData传参,则优先选择通过 new FormData的形式处理,此时headers也可以省略,该步骤等同于适用qs.stringify(obg)转义后的数据+headers配置称multipart/form-data

完成!!!
感谢大家的支持!!!文章来源地址https://www.toymoban.com/news/detail-430260.html

到了这里,关于axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA调用第三方接口的GET/POST/PUT请求方式

    GET请求 POST请求 POST请求(JSON传参) PUT请求(传TOKEN)

    2024年02月03日
    浏览(48)
  • 【LibCurl】C++使用libcurl实现HTTP POST和GET、PUT

    libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证 libcurl的官网: http://curl.haxx.se/ 库下载地址: https://github.com/curl/curl/releases/tag/curl-7_71_1 初

    2024年04月17日
    浏览(76)
  • Post和Get,Post和Put请求的区别

    最直观的区别就是 Get 请求把参数包含在 url 中,但是 Post 通过 request body 传递参数 1、应用场景 Get 请求是一个幂等的请求,一般 Get 请求用于对服务器资源不会产生影响的场景(如请求一个网页的资源); Post 不是一个幂等的请求,一般用于对服务器资源会产生影响的场景(

    2024年02月02日
    浏览(50)
  • Spring Boot中使用validator如何实现接口入参自动检验

    在项目开发过程中,经常会对一些字段进行校验,比如字段的非空校验、字段的长度校验等,如果在每个需要的地方写一堆if else 会让你的代码变的冗余笨重且相对不好维护,如何更加规范和优雅的校验呢? Spring Boot中可以使用Validation Api和Hibernate Validator实现接口入参自动检

    2024年02月12日
    浏览(35)
  • 开发笔记 | JAVA过滤器Filter实现全局接口入参去除前后空格

    目录 思考过程 遇到的问题 过滤器Filter使用步骤 全局去除入参前后空格代码实现 处理过程中自己造成的一些问题 需求背景: 前端所有的条件查询去除前后空格,如搜 【\\\"   测试    \\\"】后端将其转为【测试】。之前都是前端统一处理的,但是这次要后端处理,那么就得考虑

    2024年02月12日
    浏览(30)
  • ajax构造get、post、put请求

    前端代码: 后端代码:

    2024年02月12日
    浏览(34)
  • HTTP中的POST和PUT有什么区别?

    根据 RFC 2616, § 9.5,POST 用于创建一个资源: POST 方法用于请求源服务器接受请求中包含的实体,作为 Request-Line 中 Request-URI 标识的资源的新下级。 根据 RFC 2616, § 9.6,PUT 用于创建或替换资源: PUT 方法请求将封闭的实体存储在提供的 Request-URI 下。如果 Request-URI 引用了一个已

    2024年02月02日
    浏览(30)
  • ajax+axios——统一设置请求头参数——添加请求头入参——基础积累

    最近在写后台管理系统(我怎么一直都只写管理系统啊啊啊啊啊啊啊),遇到一个需求,就是要在原有系统的基础上,添加一个仓库的切换,并且需要把选中仓库对应的id以请求头参数的形式传递到每一个接口当中。。。 如上图所示:需要在接口请求头中添加一个 Storeid 参数

    2024年01月25日
    浏览(36)
  • HTTP中get、post、put、delete的区别

    今天开发遇到了 put请求,顺便过来拔拔草! 先说说最常用的get请求跟post请求的区别: GET请求:①一般是获取服务器资源;②get请求的查询参数需要挂载请求地址中;③请求参数具有大小限制(不同浏览器,限制的请求地址大小也不一样);④get不会对请求参数进行编码,而是

    2024年02月08日
    浏览(30)
  • 基本的 HTTP 方法GET、POST、PUT 和 DELETE

    GET 方法用于从服务器检索资源。这是一种安全的方法,因为它不会以任何方式改变资源的状态。GET 方法是幂等的,因此多次调用此方法将始终给出相同的结果。 POST 方法用于在服务器上的资源集合中创建新资源。 需要注意的是,POST 是非幂等的。因此,调用两个相同的 POS

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包