最近,我不得不用Apisauce重写我所有的API调用,这是很棒的,但是我有非常重复的代码,如下所示:
const response: ApiResponse<{ result: ReponseType }> = await api.post('endpoint1', reqBody);
if (!response.ok || !response.data) {
return getGeneralApiProblem(response);
}
return { kind: 'ok', userInfo: response.data.result }; const response: ApiResponse<{ result: ReponseType }> = await api.post('endpoint2', reqBody);
if (!response.ok || !response.data) {
return getGeneralApiProblem(response);
}
return { kind: 'ok', userInfo: response.data.result }; const response: ApiResponse<{ result: ReponseType }> = await api.post('endpoint3', reqBody);
if (!response.ok || !response.data) {
return getGeneralApiProblem(response);
}
return { kind: 'ok', userInfo: response.data.result };我怎么能提取出这部分
if (!response.ok || !response.data) {
return getGeneralApiProblem(response);
}甚至可能还有这个:
return { kind: 'ok', userInfo: response.data.result };有什么想法吗?
发布于 2022-11-24 16:07:41
唯一改变的是端点。以端点为参数,围绕api.post创建另一个函数如何?
const getAPI = async (endpoint: string) => {
const response: ApiResponse<{ result: ReponseType }> = await api.post('endpoint1', reqBody);
if (!response.ok || !response.data) {
return getGeneralApiProblem(response);
}
return { kind: 'ok', userInfo: response.data.result };
}然后,您的第一个片段简化为
return getAPI('endpoint1');还有你的第二个片段
return getAPI('endpoint2');诸若此类。
如果reqBody更改,也将其作为参数添加。
https://stackoverflow.com/questions/74563448
复制相似问题