web-dev-qa-db-ja.com

悪いリクエストでJsonを返す

したがって、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();
            }
        }
    }
5
Ryan Knopp

あなたがしているのは、BadRequest()に文字列を渡すことです。これにより、アクションはコンテンツタイプのプレーンテキストで応答を返します。

応答タイプがapplication/jsonのJSONオブジェクトを返したい場合は、文字列ではないオブジェクトをBadRequest()に渡す必要があります。匿名オブジェクトを渡して、次のようにJSONオブジェクトをすばやく作成することもできます。

return BadRequest(new { message = "bad request"});

PS:適切なJSON形式は{"field_name": "field_value"}です(値の引用符は数字、ブール、nullです)。そのため、あなたが書いたものから、content-typeをapplication/jsonに変更しても、適切に解析できませんでした。

20
Omar Beyhum