axios使用get方法传在body中传递参数

23 篇文章 0 订阅
1 篇文章 0 订阅

axios使用get方法传在body中传递参数

ajax、request

1、GET 是一定支持 传递 Body 的。

如果在很多年前,我也认为GET传递Body不合理,但是随着rustful的流行,你会发现,GET传递Body不仅合理,而且还非常必要。以我们公司目前的项目来说,有如下预定,数据交换统一使用JSON,原因在于,JSON格式的数据要更加清晰易懂,各个前后端语言都可以支持,更主要的一点是JSON解析后,是支持数据类型的。

举一个实际的例子,订单前置校验接口,这个接口是要下单前进行校验的,一次性告诉你,这个订单能不能下单(是否上架,是否可售,该区域是否可售,库存是否充足,该区域仓库库存是否充足……),看似简单的接口,实际上要做的校验非常多,调用该接口需要的参数也非常多,这些参数放到Body中尚可,放在url query中,简直没法看

在举一个更容易理解的例子

获取一张图片的sha1值,根据rustful的设计原理,很明显这应该是一个GET(获取)请求,但是很明显的时候,调用这个接口需要将图片传递过来,所以必然要用Body将图片传递过来。使用url传图片,是不是有些疯狂了。

让后端把GET改成POST,对于后端来说就是修改几个单词的事儿

如果在前几年,大家对rustful还不是很熟悉,或者用的人不多,接受度不高的时候,把GET改成POST貌似确实是一个相对合理的方案。

貌似很多年前,也有人说div+css布局不如table好用,然后div搞不定的就用table搞,现在呢?就算是做表格,也基本没人用table做了吧。

貌似很多年前,也有人说mvvm不好用,vue不好用,不如jquery,结果呢,几年前,开始流行去jquery化,相比大家印象深刻吧,不然恐怕大家用的还是jquery的ajax吧,还不是axios吧。

axios不支持get传递body,至少在我是用的时候是这个样子。或许它以后会支持,或许它永远不会支持

1、可以尝试自己修改axios源码

2、放弃axios,选择支持的组建。

其实现在h5的支持越来越全了,原生支持fetch API可以试一试

直接提供可用代码(采用xhr API)

作者:撰天
链接:https://www.zhihu.com/question/340280210/answer/952097635


<script type="text/javascript">
    
var data = JSON.stringify({
  "testField1": "hihi",
  "testField2": 123456
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http://127.0.0.1:1323/intranet/test");

xhr.withCredentials = false;
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "*/*");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "7c8c5c5f-effc-4cbb-a5c9-6e3f72c554a6,2bc402e6-9654-4f13-9e7e-33550bed91bc");
xhr.setRequestHeader("cache-control", "no-cache");

xhr.send(data);
</script>

注意!!!

xhr.withCredentials = false;
1
下面是golang接收并返回body代码

func (obj Notify) Test(c echo.Context) (err error) {
    params := new(testData)
    if err = c.Bind(params); err != nil {
        return c.JSON(http.StatusOK, tools.Code{}.ParamUnknowErr())
    }

    return c.JSON(http.StatusOK, tools.Code{}.SuccessWithData(params))
}



原文链接:https://blog.csdn.net/qq_45351419/article/details/111268127

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值