Почему конфиг WebApi для WebHook не работает на POST? - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу получить опубликованные данные от IFTTT от WebHook.Это работает при использовании GET, но не при использовании POST.

[HttpPost]
[Route("InsertData")]
public IActionResult InsertData([FromBody] string FromAddress)
{
    try
    {
         //var fromAddress = Request.Form["FromAddress"].ToString();
        _webHookDb.UserData.Add(new UserData()
        {  
            FromAddress = FromAddress,
            DateTime = DateTime.Now
        });
        _webHookDb.SaveChanges();
        return new JsonResult(FromAddress);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

1 Ответ

0 голосов
/ 01 декабря 2018

Создайте модель для хранения данных

public class Model {
    public string FromAddress { get; set; }
}

используйте это в endoint действия.

[HttpPost]
[Route("InsertData")]
public async Task<IActionResult> InsertData([FromBody] Model model) {
    try {
        if(ModelState.IsValid) {
            _webHookDb.UserData.Add(new UserData() { 
                FromAddress = model.FromAddress,
                DateTime = DateTime.Now
            });
            await _webHookDb.SaveChangesAsync();
            return new Ok(model);
        }
        return BadRequest(ModelState); //Bad data?
    } catch (Exception ex) {
        return StatusCode(500, ex.Message); //Something wrong with my code?
    }
}

Просмотрите сообщение, полученное из ответа в веб-хуке, чтобы получить подробностио том, почему запрос не был выполнен.

Если код состояния HTTP 500, значит что-то не так с тем, как сохраняются данные.

Если код состояния HTTP 400, то что-то не так с тем, как обрабатываются данныеотправлено.

...