【发布时间】:2019-01-30 04:32:46
【问题描述】:
我正在使用 aspnet 核心开发一个 WebApi。我已经能够设置一个基本项目并且请求运行良好。
现在我正在尝试使用邮递员将复杂的 JSON 对象发布到 API。 API 代码如下:
//controller class
public class DemoController : ControllerBase {
[HttpPost]
public IActionResult Action1([FromBody]TokenRequest request) {
/* This works. I get request object with properties populated */
}
[HttpPost]
public IActionResult Action2(TokenRequest request) {
/* The request is received. But properties are null */
}
}
//TokenRequest Class
public class TokenRequest {
public string Username { get; set; }
public string Password { get; set; }
}
试图用邮递员进行测试。
请求 1:(Action1 和 Action2 均失败)
POST /Demo/Action2 HTTP/1.1
Host: localhost:5001
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 42642430-bbd3-49ca-a56c-cb3f5f2177cc
{
"request": {
"Username": "saurabh",
"Password": "******"
}
}
请求 2:(Action1 成功,Action2 失败)
POST /User/Register HTTP/1.1
Host: localhost:5001
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 94141e01-7fef-4847-953e-a9acb4e6c445
{
"Username": "saurabh",
"Password": "******"
}
由于 [FromBody[ 标记,这些东西与 Action1 一起工作。但是如果我需要接受多个参数呢?喜欢
public IActionResult Action1(int param1, TokenRequest request)
选项 1:使用包装类(由 Francisco Goldenstein 建议)
[FromBody] 不能与两个不同的参数一起使用。有什么优雅的解决方案可以让我接受它们作为 Action 方法中的单独参数吗?
【问题讨论】:
-
param1 在哪里?查询参数?
-
我们也可以说它在正文中。
标签: json asp.net-core asp.net-core-webapi