2015-08-28 2 views
0
  1. POST /auth и писать serial=123 в теле
  2. POST /auth?serial=123 с пустым телом

Можно ли принимать эти 2 вида сообщений с одним методом?ASP.NET WebAPI может получать POST-параметры от Uri или Body?

В теперь я могу достичь лишь с 2-мя методами:

[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) 

Я POST либо /authserial=123 в организме) или /auth?serial=123.

Но WebAPI кажется другим?

--UPDATE--

Вдохновленный комментарий, я найти способ, как это:

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

И я проверяю их обоих, чтобы получить значение. Но это не совсем удобно, особенно если есть много параметров.

+0

Вы можете сразу прочитать их из тела и URL-адрес, а не поддерживать его таким образом –

ответ

0

Ну, я думаю, что это приемлемый способ, по крайней мере, для меня:

public IHttpActionResult CheckSerial([FromBody] SerialViewModel checkBody, [FromUri] SerialViewModel checkUri) 
    { 
     return Json(new { status = (checkBody?.serial ?? checkUri?.serial ?? "")=="123"?"1":"0" }); 
    } 
Смежные вопросы