我使用ky包向web api发送HTTP请求。除了处理错误消息外,一切都正常。
让我给你看我的源代码:
// api method
[HttpPost("Test")]
public async Task<IActionResult> Test([FromBody] TestViewModel model)
{
if(model.Test)
{
return StatusCode(StatusCode.Status200OK, "Success message");
}
else
{
return StatusCode(StatusCodes.Status500InternalServerError, "Error message");
}
}
我的目标是在前端获取并显示成功消息或错误消息text。
客户端:
//webclient.js
import ky from "ky";
export const webclient = ky.create({
prefixUrl: "http://localhost:62655/api",
});
触发API调用:
//testAPI.js
import { webclient } from '../../common/webclient';
const result = await webclient.post('Order/Test', { json: { ...model } }).json();
console.log(result);
如果状态代码等于200,则消息(成功消息(将正确显示在控制台中,但对于500(或400,或任何其他(控制台,则保持为空。
DevTools确认API返回500状态代码,消息错误消息,因此这不是API问题。
问题是:如何使用ky
获取错误消息?
ky
库似乎不是很成熟,但我确实找到了这个问题线程,它可能会有所帮助~https://github.com/sindresorhus/ky/issues/107#issuecomment-476048453
我强烈建议你只使用普通的fetch
,如果需要,你可以完全控制处理响应文本
const response = await fetch("http://localhost:62655/api/Order/Test", {
method: "POST",
headers: { "Content-type": "application/json" },
body: JSON.stringify({ ...model })
})
if (!response.ok) {
throw new Error(`${response.status}: ${await response.text()}`)
}
console.log(await response.json())