ASP.NET Core 2.2 ApiControllerを使用していますが、次のものがあります。
[ApiController]
public class PostController : Controller {
[HttpGet("posts")]
public async Task<IActionResult> Get() {
return BadRequest();
}
}
この場合、次の応答があります。
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "0HLMFSL0C7SKB:00000001"
}
しかし、次のようにいくつかのデータを返す場合:
[ApiController]
public class PostController : Controller {
[HttpGet("posts")]
public async Task<IActionResult> Get() {
List<String> errors = new List<String> { "Code is invalid" };
return BadRequest(new { errors = errors });
}
}
私は次のようになります:
{
"errors": ["Code is invalid"]
}
コンテンツが返されないのに、ApiControllerがタイプ、タイトル、ステータス、traceIdを追加するのはなぜですか?
応答は常に次のようになります。
{
"errors": ["Code is invalid"],
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "0HLMFSL0C7SKB:00000001"
}
JsonConvertを使用して、不正な要求をシリアル化してみてください。
badRequest(JsonConvert.Serialize(new List {“コードが無効です”}));を返します。
BadRequest()
の結果を返す代わりに、代わりにValidationProblem()
の結果を返す必要があります。これにより、現在のModelStateエラーが入力されたProblemDetailsオブジェクトの応答が得られます。