Плагин Dynamics CRM C# - впервые с API - PullRequest
0 голосов
/ 18 января 2020

Хотя я некоторое время занимался разработкой в ​​Dynamics, мне никогда раньше не приходилось делать внешний вызов API.

Я не уверен, с чего начать. Любая помощь в указании меня в правильном направлении была бы очень полезна.

Соответствующий Api находится здесь: http://apidocs.assess.com/

Там есть примеры, показывающие, что нужно передать на URL (https://app.fasttestweb.com/FastTest/api/swagger.json) Но, честно говоря, это моя первая попытка сделать это, и я поражен информацией, которую я нашел, и не могу разобраться, что нужно сделать для этого.

Шаг 1, конечно, заключается в создании токена авторизации с сайта. Это должно быть передано в этой формации (я предполагаю, что это JSON). Но мне трудно понять, как это сделать, или как должен выглядеть код. Если у кого-нибудь есть пример того, что он сделал, или он может указать мне ссылку / видео, которое просматривает это, это было бы здорово.

Обратите внимание, у меня установлен Newtonsoft. Json в Visual Studio, но у меня возникают проблемы с поиском хороших примеров того, как на самом деле передавать информацию туда и обратно. Заранее спасибо.

1 Ответ

1 голос
/ 18 января 2020

Как вызывать API в состоянии покоя - это действительно распространенная практика для разработчика, поскольку это обычная практика для представления данных, я настоятельно рекомендую вам прочитать эту тему, есть много хороших ресурсов, этот сайт один и YouTube другой, сделал быстрый поиск и нашел много об этом: https://www.youtube.com/results?search_query=intro+to+rest+c%23

К проблеме: документация чванства говорит вам все, что вам нужно знать, чтобы позвонить обслуживайте после, возьмите, например, службу аутентификации, прежде всего нам нужно знать, какой метод использует служба, в данном случае это почта. Теперь нам нужно узнать, по какому адресу мы можем позвонить в сервис. Указано в документах как: https://app.fasttestweb.com/FastTest/api/auth/simple Что мы отправляем:

{
  "username": "string",
  "pwd": "string",
  "apiKey": "string",
  "timeSent": 0,
  "tokenTTL": 0
}

Если вы переключитесь на модель, вы увидите описание параметров. Вы даже можете проверить это прямо на странице, отредактировав редактируемое поле со значениями, которые вам дали, и нажав «попробовать!». в нижней части спецификации конечной точки.

Какой ответ мы получаем:

{
  "apiToken": "string",
  "timeGenerated": 0,
  "ttl": 0
}

Чтобы назвать это, есть много способов сделать это, мне нравится делать отдельные объекты / dto's что я отправляю и получаю, а затем сериализую / десериализирую их от и до этого объекта. Поскольку у вас уже есть json. net, вот как вы делаете serialize .

. Вы можете указать указанные c json имена, чтобы они совпадали со схемой с атрибут или определение стратегии .

Когда вы получите json обратно из сервиса, вам придется десериализовать it.

Так что ваш объект obj будет выглядеть, например, следующим образом:

 public class AuthBody
    {
        [JsonProperty("username")]
        public string UserName { get; set; }

        [JsonProperty("pwd")]
        public string Password { get; set; }

        [JsonProperty("apiKey")]
        public string ApiKey { get; set; }

        [JsonProperty("timeSent")]
        public int TimeSent { get; set; }

        [JsonProperty("tokenTTL")]
        public int TokenTimeToLive { get; set; }
    }

Просто настройте ответ аналогичным образом. Мне нравится использовать библиотеку под названием RestSharp для вызова служб отдыха, она доступна на nuget. Вот очень базовый пример кода c (не тестировался):

var body = new AuthBody()
            {
                UserName = "value",
                Password = "value",
                ApiKey = "value",
                TimeSent = 123,
                TokenTimeToLive = 10000
            };
            var json = JsonConvert.SerializeObject(body);

            var client = new RestClient("https://app.fasttestweb.com/FastTest/api");

            var request = new RestRequest("auth/simple", Method.POST, DataFormat.Json);
            request.AddParameter("application/json", json, ParameterType.RequestBody);

            var jsonResponse = client.Execute(request);
            AuthResponse authResponse = JsonConvert.DeserializeObject<AuthResponse>(jsonResponse.Content);

Вы также можете установить сериализатор restsharp по умолчанию на json. net, если хотите, тогда вы можете установить тело с addJsonBody вместо параметра, и вам не нужно сериализовывать ваш объект самостоятельно, больше информации доступно на RestSharp . если вы не хотите использовать RestSharp, обычный клиент называется HttpClient, а не RestClient, если вы хотите использовать его в Google.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...