POST-объект Web API всегда пуст - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в ASP.NET Web API и пытаюсь написать метод API, который будет отправлять электронные письма.

Это мой контроллер sendEmail:

[Route("sendemail")]
[HttpPost]
public bool SendEmail(EmailObj email)
{
    var To = email.sendTo;
    var Subject = email.subject;
    var Message = email.message;
    ...
}

Однако всякий раз, когда я проверяю его с помощью почтальона, отправляемый объект является нулевым.Вот как мой объект json построен в почтальоне:

{
    "subject": "Test Message",
    "message": "this is a test",
    "sendTo": "sam@test.com"
}

Я проверяю, что тип помечен как JSON на почтальоне, и попытался отформатировать его по-разному, но, похоже, он не работает.API получает объект электронной почты, но всегда имеет значение null.

Вот скриншот моего почтальона на случай, если я что-то упустил.

Любая помощь приветствуется.

Редактировать: уже пытались добавить "[FromBody] "и добавление" email: {} "в json, но это не работает.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Я обнаружил, в чем была ошибка, я объявил свой объект электронной почты как «Сериализуемый», и это мешало объекту json получить какое-либо значение.

0 голосов
/ 01 октября 2018

Вы можете сравнить свой контроллер с приведенным ниже кодом, и вы можете щелкнуть эту ссылку и увидеть вывод.

[RoutePrefix("api/test")]
public class TestController : ApiController
{

   [Route("sendemail")]
   [HttpPost]
   public bool SendEmail(EmailObj email)
   {
       if(email !=null)
       {
           return true;
       }
       return false;
   }

}

public class EmailObj
{
    public string sendTo { get; set; }
    public string subject { get; set; }
    public string message { get; set; }
}

Это мой образ почтальона, который, как я назвалсообщение api.

Это мое изображение файла WebApi.config.

0 голосов
/ 01 октября 2018

Вы можете сделать 2 вещи:

public bool SendEmail([FromBody]EmailObj email)

Или изменить тело объекта json на:

{
    "email": {
        "subject": "Test Message",
        "message": "this is a test",
        "sendTo": "sam@test.com"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...