我有以下在控制器,它漂亮地捕捉到 ProducerConfig
来自querystring的设置
[HttpPost("mylink/load/")]
public async Task<IActionResult> PostMessageAsync(CancellationToken cancellationToken, [FromQuery] ProducerConfig producerConfigs)
但是,如果我决定更改以从请求体捕获参数,而不是从querystring捕获参数,我就不能这样做。
public async Task<IActionResult> PostMessageAsync(CancellationToken cancellationToken, [FromBody] ProducerConfig producerConfigs)
我向 Postman 提出了一个请求,请求的主体如下:
{
"LingerMs" : 420,
"BatchNumMessages" : 5,
"CompressionLevel" : 2,
"CompressionType" : 1
}
请求失败。
响应
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|246f628d-4624827bfa8633b1.","errors":{"$":["The JSON value could not be converted to Confluent.Kafka.ProducerConfig. Path: $ | LineNumber: 0 | BytePositionInLine: 1."]}}
1条答案
按热度按时间gcmastyq1#
更新23/07
{“类型”:https://tools.ietf.org/html/rfc7231#section-6.5.1“,”title“:”出现一个或多个验证错误“,”status“:400,“traceid”:“| 246f628d-4624827bfa8633b1”,“errors”:{“$”:[“JSON值无法转换为confluent.kafka.producerconfig。路径:$|行号:0 | BytePositionLine:1。“]}}
我以前遇到过这种情况。你可以试着安装
Newtonsoft.JSON
包裹。在startup.cs中添加
添加
[HttpPost]
如果使用[FromBody]
一Get
不发送表单的正文,它只请求URL
. 使用<form>
并将其发布到您的控制器方法中,该方法需要使用HttpPost
.控制器代码
调试截图
Postman 截图