[英]How to read request body in an asp.net core webapi controller?
[英]How do I read multiple parameters from a JSON request body in ASP.NET Core?
本质上,我有一个 API 端点,如下所示:
public async Task<ActionResult<UserDTO>> SignUp(string username, string password, Guid inviteId)
我希望所有这些参数都来自请求正文中的 JSON object ,如下所示:
{
'username': 'foo',
'password': 'bar',
'inviteId': '00000000-0000-0000-0000-000000000000'
}
我知道我可以使用这些参数作为字段创建 class,但是有没有更简洁的方法来做到这一点? 另外,我如何接受来自 JSON object和其他来源的参数? (即, inviteId
可能来自 JSON object 或查询字符串)
编辑:澄清一下,我不想使用自定义 class或JObject 之类的东西。 我希望 function 直接接收其参数,而无需进行任何手动解包或解析。 基本上,function 签名应保留为SignUp(string username, string password, Guid inviteId)
,并且该解决方案应添加到 ASP.NET 的 model 绑定功能。 另外,如果我能提供帮助,我不想使用任何第三方软件包。
有几种选择。 我将使用模型绑定来完成此操作:
[HttpGet] // Or any HTTP method
public IActionResult GetSomething([FromRoute] string username, [FromQuery] SomeQuery query)
在NewtonSoft package
JObject
进口
using Newtonsoft.Json.Linq;
改变方法,如
public async Task<ActionResult<UserDTO>> SignUp([FromBody] JObject dataObject)
您可以通过键访问数据,
var username = dataObject["username"].ToString(); var password= dataObject["password"].ToString();
使用这种机制,您可以在没有 model 绑定的情况下处理复杂的 JSON 对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.