繁体   English   中英

如何从 ASP.NET 核心中的 JSON 请求正文中读取多个参数?

[英]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 或查询字符串)

编辑:澄清一下,我不想使用自定义 classJObject 之类的东西。 我希望 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

  1. 进口

    using Newtonsoft.Json.Linq;
  2. 改变方法,如

    public async Task<ActionResult<UserDTO>> SignUp([FromBody] JObject dataObject)
  3. 您可以通过键访问数据,

     var username = dataObject["username"].ToString(); var password= dataObject["password"].ToString();

使用这种机制,您可以在没有 model 绑定的情况下处理复杂的 JSON 对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM