ASP.NET WebAPI可以从Uri或Body接收POST参数吗?

时间:2015-08-28 16:00:43

标签: asp.net-mvc asp.net-web-api

  1. POST /auth并在正文中写下serial=123
  2. POST /auth?serial=123空身
  3. 是否可以通过一种方法接受这两种帖子?

    现在我只能通过两种方法实现它:

    [HttpPost]
    public IHttpActionResult CheckSerial(string serial)
    

    public class SerialViewModel
    {
        public string serial { get; set; }
    }
    [HttpPost]
    public IHttpActionResult CheckSerial(SerialViewModel sm)
    

    我注意到在ASP.NET MVC5中,只需一种方法即可完成。

    [HttpPost]
    public ActionResult auth(SerialViewModel check)
    

    我可以发布/auth(身体为serial=123)或/auth?serial=123

    但WebAPI似乎有所不同?

    - UPDATE -

    受到评论的启发,我找到了这样的方式:

    public IHttpActionResult CheckSerial(SerialViewModel sm,[FromUri]string serial = null)
    

    我检查它们两个以获得一个值。但这不太方便,特别是如果有很多参数。

1 个答案:

答案 0 :(得分:0)

嗯,我认为这是一种可以接受的方式,至少对我而言:

    public IHttpActionResult CheckSerial([FromBody] SerialViewModel checkBody, [FromUri] SerialViewModel checkUri)
    {
         return Json(new { status = (checkBody?.serial ?? checkUri?.serial ?? "")=="123"?"1":"0" });
    }