Fetch API でresponse.okがfalseの時でもjsonデータを取得することはできますか?
お世話になります。
JavaScriptのFetch APIを利用してASP.netからJSONデータを取得しています。
下記のように、エラーステータス(400等)を返却すると、response.okはfalseとなり、response.json()で「Syntax error:JSON.parse: unexpected character at line 1 column 1 of the JSON」になってしまいます。
responseの中身をみると、bodyUsedがfalseになっており、bodyがそもそも空になっているようです。
response.okがfalseでもjsonを取得することはできますでしょうか?
JavaScript側
const getData = () => {
fetch("url", { method: "GET"}).then(response => {
// response.ok がfalseの時、SyntaxErrorになる
if (response.ok) {
response.json();
}
}).then(json => {
console.log(json);
}).catch(error => {
console.log(error);
});
}
ASP.net側実装
[HttpGet]
public ActionResult Get()
{
// 検証のため常に 400 bad request を返却
Response.StatusCode = 400;
return Json(new { error = "error", message = "エラーです" });
}
[参考にしたサイト]
MDN Fetch API(https://developer.mozilla.org/ja/docs/Web/API/Fetch_API)
Fetch Standard(https://fetch.spec.whatwg.org/)
よろしくお願いいたします。