したがって、OK(value)は、application/jsonヘッダーを持つフォーマットされたjsonを返します。ただし、BadRequest()はそうではありません。リクエストがapplication/jsonの場合、それが悪いリクエストであっても、レスポンスはそのようにすべきではありませんか?
[HttpPost]
public IActionResult Post([FromBody]Resolution value)
{
using (_ctx)
{
try
{
if (ValidateResolution(value.Size))
{
_ctx.Resolution.Add(value);
_ctx.SaveChanges();
return Ok(value);
}
return BadRequest("{message:hello}");
} catch (Exception) {
return BadRequest();
}
}
}
あなたがしているのは、BadRequest()に文字列を渡すことです。これにより、アクションはコンテンツタイプのプレーンテキストで応答を返します。
応答タイプがapplication/jsonのJSONオブジェクトを返したい場合は、文字列ではないオブジェクトをBadRequest()に渡す必要があります。匿名オブジェクトを渡して、次のようにJSONオブジェクトをすばやく作成することもできます。
return BadRequest(new { message = "bad request"});
PS:適切なJSON形式は{"field_name": "field_value"}です(値の引用符は数字、ブール、nullです)。そのため、あなたが書いたものから、content-typeをapplication/jsonに変更しても、適切に解析できませんでした。