【问题标题】:Is it possible to create a parameter binding on both FromURI and FromBody?是否可以在 FromURI 和 FromBody 上创建参数绑定?
【发布时间】:2016-05-11 16:49:56
【问题描述】:

我查阅了 ASP.NET Web API 参数绑定的文档,它们似乎只有 fromURI 和 fromBody。是否可以两者兼得?

这里是一些背景信息。我正在创建一个 webhook 接收器/处理程序,在其中我可以控制哪个 URL 是 webhook,但在工作流的后期之前我无法控制有效负载的样子,所以我需要将它作为 JSON字符串优先。

我希望能够设置可以接收查询字符串以及来自 HTTP POST 的 Json 字符串有效负载的路由。例如 .../api/incoming?source=A.

【问题讨论】:

    标签: c# asp.net asp.net-web-api


    【解决方案1】:

    如果我理解正确,您正在尝试同时使用正文中的 Post 数据和 URI 中的一些参数。下面的示例应该从 queryString 中捕获您的“source=a”值。

        [Route("incoming")]
        [HttpPost]
        public IHttpActionResult Test([FromBody] string data, string source)
        {
            //Do something
    
            return Ok("my return value");
        }
    

    或者,如果您将路线格式化为 .../api/incoming/source/A,您可以使用如下方式。

        [Route("incoming/{source:string}")]
        [HttpPost]
        public IHttpActionResult Test([FromBody] string data, string source)
        {
            //Do something
    
            return Ok("my return value");
        }
    

    【讨论】:

    • 使用字符串参数类型很可能不会如您所愿。看到这个帖子bizcoder.com/posting-raw-json-to-web-api
    • @DarrelMiller 我同意。我们通常将对象模型映射到我们 API 中的 JSON。或者根据传入的数据使用 Dictionary 或其他。他专门询问了 JSON 作为字符串,所以我没有详细说明。干杯。
    • 感谢大家的投入。由于目前我对 JSON 字符串的内容是黑盒的,所以我无法在参数绑定阶段创建对象模型来映射到它。既然我不能做 [FromBody] 字符串数据,那么 [FromBody] JToken 数据在这种情况下可以工作吗?
    猜你喜欢
    • 2014-03-10
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多