有这个简单的端点:
[HttpPost]
public async Task<IActionResult> CreateUser([FromBody] UserInput userInput)
{
if (userInput == null) return BadRequest();
var userOutput = await _userService.AddUser(userInput);
return CreatedAtRoute("GetUser", new { userId = userOutput.UserId }, userOutput);
}
字符串
我如何检索已发送的确切JSON?
就像现在一样,json输入中的所有字段都必须在UserInput
类中实现。我想知道是否还有一种方法可以在转换为UserInput
类之前捕获原始主体。
多谢帮忙!
2条答案
按热度按时间yqlxgs2m1#
获取实际的JSON体当您在. NET 5或更高版本中使用Model Binding时,
首先,将此扩展方法添加到您的解决方案中,使我们的生活更轻松
字符串
我们需要在Map控制器/端点之前在管道中添加小型中间件,以使此方法正确工作
型
现在,您可以在Action中获取JSON Body请求,如下所示
型
更多信息请参见Reading the raw request body as a string in ASP.NET Core
mznpcxlj2#
您可以使用HttpLogging中间件来捕获此请求信息
HTTP Logging是一个中间件,记录有关传入HTTP请求和HTTP响应的信息。HTTP Logging提供以下日志:
HTTP请求信息通用属性标头正文HTTP响应信息
很容易配置和设置,你可以添加任何请求头,响应头等日志
字符串
通过在
Program.cs
中调用以下命令将其添加到管道中:app.UseHttpLogging();
的并将其添加到
appsettings.json
中的logLevel
中,"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
个