例子:
已知现在是通过两个值来对本地server请求数据。
http://localhost:3001/projects?name=%E9%AA%91%E6%89%8B&personId=1
name是转译过的,在这里我们是要使用name和personId从服务端请求值,所以这里的处理比较重要。
1、如果我们是在本机设置的mock-server进行接口测试,我们应该把测试的接口与最后正式使用的接口区分开来,这里可以看我上一篇blog
然后这个接口就变成了这样:
`${apiUrl}/projects?name=%E9%AA%91%E6%89%8B&personId=1
使用apiUrl代替主接口。
2、我们需要对name和personId这两个值进行处理,因为虽然我们是通过这两个值来进行查询,但是这两个值在初始设置值的时候都为空,所以在查询也会有可能出现这种情况:
`${apiUrl}/projects?name=&personId=1
这里的name后面没有值,这里就不需要name在这里了
所以我们这里需要处理:
新建文件夹util,在里面新建index.js文件来处理这个问题:
export const isFalsy=(value)=>value===0?false:!value
export const cleanObject=(object)=>{
const result={...object}
Object.keys(result).forEach(key => {
const value=result[key]
if(isFalsy(value)){
delete result[key]
}
});
return result;
}
在需要做处理的项目中以对象的形式将参数传给这个函数就可以了。
3、原先,我们是按照有两个决定值来编写的接口,可是现在只有一个决定值,我们又该怎么解决这个问题呢?
yarn add qs
`${apiUrl}/projects?${qs.stringify(cleanObject(param))}`
使用qs.stringify就能灵活处理一个决定值还是两个决定值的问题,param就是name与personId组成的对象。