【发布时间】:2021-12-09 12:08:57
【问题描述】:
所以我将不可重用的获取请求代码 sn-p 转移到我的 API:
let response = await fetch(visitURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + userJWT
},
body: JSON.stringify(endingVisit)
});
if (response.ok) {
let {visitId, createdAt} = await response.json();
const viewVisitDto = new ViewVisitDto(`${visitId}${createdAt}${visitorId}${doctorId}${oldPatientId}`);
return viewVisitDto;
} else {
throw new Error("deactivated!")
}
我能做到这一点:
axios.post(visitURL, {
headers,
body: JSON.stringify(visit)
}).then((response) => {
console.log(response);
}).catch((error) => {
console.log(error);
})
但并没有完全从响应中给我visitId 和createdAt,我不能使用response.ok 或response.json()。本质上,我需要删除应该在响应中返回的 visitId 和 createdAt。
我也尝试过只使用node-fetch 库,但尽管在 VS 代码中它似乎接受它,但即使我安装了@types/node-fetch,即使我为它创建类型定义文件,TypeScript 也不满意,我的 API 就是不喜欢它。
【问题讨论】:
-
我不确定你要问的是什么,但是
node-fetch最近在他们的包中切换到了 ES6 模块格式,所以你需要降级到以前的主要版本(2 .xx,我相信)以便能够将它与 TypeScript 和@types/node-fetch一起使用。 (或者把你的项目转成模块,可能不太方便。) -
“对它不满意”/“不喜欢它”并不是我见过的最好的错误报告。问题是什么?你可以
await axios.post(...)就像你等待fetch一样。响应的 API 不同,因此您可能需要做一些工作并查看文档以查看response为您提供了什么... -
不明白吗?如果它有效,为什么不直接使用 fetch 版本?..
non-reusable fetch request code甚至不知道这意味着什么。 -
@hayavuk,它也不喜欢
2.6.5版本,这意味着TypeScript 仍在抱怨,我安装了@types/node-fetch并添加了.d.ts文件。我什至重新启动了编辑器。 -
@Daniel
@types/node-fetch版本是否与node-fetch包的版本匹配?
标签: javascript typescript axios