get请求为什么有的请求参数放到链接后面有的放到请求参数中?

今天调用了一个接口,接口要求传一个日期过去,当时没仔细看(因为文档也没写请求参数和相应参数),以为是传一个data,里面有条件查询的参数之类的,结果第一次报错。
    export function todayUserNum(data){

return request({

url:'/system/home/todayNum',

method:'get',

data:data

})

}

Required request parameter 'date' for method parameter type String is not present(方法参数类型字符串所需的请求参数“日期”不存在)

后面第二次调用的时候注意到了文档上的参数说明,于是就改成了这个样子
    export function todayUserNum(date){

return request({

url:'/system/home/todayNum',

method:'get',

params:date

})

}

同样接口给我抛出了上述的错误,并且我的请求参数值被分割了,我意识到可能是框架的某块公用请求将参数值分割了。我又更换了一次写法
    export function todayUserNum(date){

return request({

url:'/system/home/todayNum?date='+date,

method:'get'

})

}

这次接口成功获取到了数据,但是我又试了试另一种写法
    export function todayUserNum(date){

return request({

url:'/system/home/todayNum'+date,

method:'get'

})

}

这时候接口抛出了404异常

Error: Request failed with status code 404

我又又尝试了一下其他写法,这一次,我将请求参数放在了请求体里面
    export function todayUserNum(date){

return request({

url:'/system/home/todayNum'+date,

method:'get',

params:{

date:date

}

})

}

接口请求成功
但是有的接口的get请求方式就用上述的某种方法可以走通,比如:
    1. export function getCheck(id) {

return request({

url: '/system/check/' + id,

method: 'get'

})

}

2. export function listCheck(query) {

return request({

url: '/system/check/list',

method: 'get',

params: query

})

}

我不太懂这种写在链接后的和写在请求体上的区别在哪里,而且也不太懂为什么有的参数可以直接将值放上去,有的要规定请求参数名和值,希望大佬可以解答一下


回答:

就算你没接触后端接口设计也没关系。
前端的路由你应该知道,路由里面有两个关键的概念,

1.params:/router1/:id ,    //router1/123,/router1/789 ,这里的id叫做params

2.query:/router1?id=123 , //router1?id=456 ,这里的id叫做query。

query添加需要按照浏览器规则来拼接 ?id=123&id2=567&id3=789
axios中的params接受一个对象 他最终也会以query的形式给你拼接到 url 后面

以上是 get请求为什么有的请求参数放到链接后面有的放到请求参数中? 的全部内容, 来源链接: utcz.com/p/935133.html

回到顶部