2016-02-02 28 views
0

我查阅了ASP.NET Web API参数绑定的文档,他们似乎只有来自URI和fromBody。可以做到两者吗?ASP.NET Web API:是否可以在FromURI和FromBody上创建参数绑定?

这是一些背景信息。我创建了一个webhook接收器/处理程序,在那里我可以控制哪个URL是webhook,但是我不能控制有效负载在工作流程的后期阶段会是什么样子,所以我需要把它作为JSON字符串第一。

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

谢谢

+0

是的,这是可能的。 –

回答

2

如果我理解正确,你正在尝试使用无论是从身体的邮政数据,并从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"); 
    } 
+3

使用字符串参数类型很可能不会做你想做的事。看到这篇文章http://www.bizcoder.com/posting-raw-json-to-web-api –

+1

@DarrelMiller我同意。我们通常将一个对象模型映射到我们API中的JSON。或者根据输入的数据使用Dictionary 或其他。他特别询问JSON是一个字符串,所以我没有详细说明。干杯。 – jsxsl

+0

感谢大家的投入。由于目前我对JSON字符串的内容进行了黑箱操作,所以我无法创建对象模型以在参数绑定阶段映射到它。由于我无法做[FromBody]字符串数据,在这种情况下,[FromBody] JToken数据会起作用吗? – frostshoxx

相关问题