потреблять JSON из webhook в C # - PullRequest
       44

потреблять JSON из webhook в C #

0 голосов
/ 31 октября 2019

Привет! Я собираюсь создать простой приемник веб-крюка и записать данные в таблицу.

Это для получения SMS с использованием Zipwhip. Zipwhip отправит сообщение с JSON.

Необходимо получить JSON и обработать.

Какой простой способ сделать это.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

В ServiceStack ваш обратный вызов должен просто соответствовать форме вашего DTO Response, например:

[Route("/path/to/callback")]
public class CorpNotes
{
    public int Departments { get; set; }

    public string Note { get; set; }

    public DateTime WeekEnding { get; set; }
}

// Example of OrmLite POCO Data Model 
public class MyTable {} 

public class MyServices : Service
{
    public object Any(CorpNotes request)
    {
        //... 
        Db.Insert(request.ConvertTo<MyTable>());
    }
}

Пример использует Утилиты автоматического сопоставления для заполнения вашегоOrmLite POCO datamodel, вы можете выполнить дополнительную обработку перед сохранением модели данных.

Если обратный вызов может отправлять произвольные ответы JSON в полезной нагрузке, вы можете использовать свойство объекта для принятия произвольного JSON однако мы рекомендуем использовать Typed DTO везде, где это возможно.

0 голосов
/ 31 октября 2019

Это может быть то, как метод приема в вашем контроллере может выглядеть на принимающей стороне. Убедитесь, что ваш принимающий и отправляющий объект json совпадают.

    [HttpPost]
    [Route("Edit")]
    public JsonResult Edit([FromBody] CorpNotes newMessage)

        {return Json(TotalWeekNoteSearch);}

public class CorpNotes
{
    public int Departments { get; set; }

    public string Note { get; set; }

    public DateTime WeekEnding { get; set; }
}

Я на самом деле работаю над проектом .net, получающим Json от внешнего интерфейса Angular, так что это должна быть та же самая концепция. Также убедитесь, что то, что вы получаете, действительно работоспособный объект, такой как.

    {Departments: 4, Note: "This is notes 2020Q1W13", WeekEnding: "2020-01-25T00:00:00"}

Также попробуйте взглянуть на этот пример, который будет полезен в отношении веб-хуков.

public class MyWebHookHandler : WebHookHandler
{
    public MyWebHookHandler()
    {
        this.Receiver = "custom";
    }

    public override Task ExecuteAsync(string generator, WebHookHandlerContext context)
    {
        CustomNotifications notifications = context.GetDataOrDefault<CustomNotifications>();
        foreach (var notification in notifications.Notifications)
        {
            ...
        }
        return Task.FromResult(true);
    }
}

тип данных, как правило, представляет собой данные формы JSON или HTML, но при желании можно привести их к более конкретному типу.

...