3

Мне нужно настроить метод Web API для приема параметров POST, отправленных из моих приложений для Android и iOS. Это то, что я сейчас:Настройка метода POST Web API?

[HttpPost] 
[Route("api/postcomment")] 
public IHttpActionResult PostComment([FromBody]string comment, [FromBody]string email, [FromBody]string actid) 
{ 
     string status = CommentClass.PostNewComment(comment, email, actid); 
     return Ok(status); 
} 

Однако это не работает, так как я считаю, что метод не может принимать несколько параметров [FromBody] сразу? Как я могу правильно настроить этот метод таким образом, чтобы он принимал 3 параметра POST из тела запроса?

ответ

4

Вы можете использовать модель. DefaultModelBinder привяжет эти значения от формы к вашей модели.

enter image description here

enter image description here

public class CommentViewModel 
{ 
    public string Comment { get; set; } 
    public string Email { get; set; } 
    public string Actid { get; set; } 
} 

public IHttpActionResult PostComment([FromBody]CommentViewModel model) 
{ 
    string status = ...; 
    return Ok(status); 
} 
+0

Спасибо, друг. Однако, когда я вызываю метод от моих клиентов android и iOS, у меня нет этого настраиваемого класса. Как он может быть совместим, даже если я создаю ту же модель в моих проектах Android и ios? – Dinuka

+1

Вам просто нужно указать ** JSON ** значения от клиента. Посмотрите на экран запроса скриншота. DefaultModelBinder очень умный. – Win

+0

Эй, Win, я получаю сообщение «{»: «Запрошенный ресурс не поддерживает метод http« GET ».«} ». Я использовал тот же самый метод, который вы использовали, и добавил к нему [Route («api/postcomment»)]. – Dinuka

1

Вы можете сделать это -

  1. Создайте один пользовательский класс и добавить три свойства для трех входных параметров.
  2. Измените метод PostComment, чтобы принять только один параметр этого класса.
  3. При вызове этого WebAPI создайте один объект этого класса, присвойте значения свойствам, сериализуйте его в JSON или XML и POST.
  4. WebAPI автоматически де-сериализует ваш орган запроса и передает его вашему методу.
Смежные вопросы