调用Freelancer API的/users/0.1/users接口返回400 BAD_REQUEST错误如何解决?
问题根因
你的请求参数序列化逻辑不符合Freelancer该接口的参数要求:封装的fetchV2函数直接把数组类型的参数值当成普通字符串拼接,会将{users:[123456,654321]}转成users=123456%2C654321的格式,但该接口要求数组参数必须用[]后缀的key重复传值,最终query需要是users[]=123456&users[]=654321的格式,和实际传参的参数名不匹配,所以触发参数缺失的报错。
解决方案
- 首先调整
fetchV2函数的参数拼接逻辑,单独处理数组类型的参数:
function fetchV2(urlOb, headerOb, paramsOb) { Object.keys(paramsOb).forEach(key => { const value = paramsOb[key] // 数组类型参数自动加[]后缀,逐个拼接参数 if (Array.isArray(value)) { value.forEach(item => { urlOb.searchParams.append(`${key}[]`, item) }) } else { urlOb.searchParams.append(key, value) } }) return fetch(urlOb, headerOb) }
- 业务侧调用代码无需修改,保持原有写法即可。修改后你可以打印
url.toString()验证请求地址,确认query部分包含users[]=123456&users[]=654321格式的参数后,即可正常请求接口。
内容的提问来源于stack exchange,提问作者shahin rahimi
相关产品推荐
相关产品推荐

