Dynamics CRM C# 插件 - 第一次使用 API
Dynamics CRM C# Plugin - First time with API
虽然我已经在 Dynamics 中开发了一段时间,但我以前从未需要对 API 进行外部调用。
我不知道从哪里开始。任何帮助我指出正确方向的帮助都会非常有帮助。
有问题的 Api 位于此处:
http://apidocs.assess.com/
其中有示例显示需要传递给 url (https://app.fasttestweb.com/FastTest/api/swagger.json) 的内容
但老实说,这是我第一次尝试这样做,我对我一直在寻找的信息感到不知所措,并且无法解析为此需要做的事情。
第 1 步当然是从网站生成一个授权令牌。
这需要以这种形式传递(我假设是JSON)。
但是我什至无法弄清楚如何做那部分,或者代码应该是什么样子。如果有人有他们做过的事情的例子,或者可以给我指出一个 link/video 来解决这个问题,那就太棒了。
请注意,我确实在 Visual Studio 中安装了 Newtonsoft.Json,但我找不到关于如何实际来回传递信息的好例子。
先感谢您。
如何在 rest 中调用 API 是开发人员的一种非常常见的做法,因为这是公开数据的常见做法,我强烈建议您阅读该主题,这里有很多很好的资源在那里,这个网站是一个,youtube 是另一个,快速搜索并找到了很多关于它的信息:https://www.youtube.com/results?search_query=intro+to+rest+c%23
对于手头的问题:
大摇大摆的文档告诉你所有你需要知道的来调用你的服务,
以auth服务为例,首先我们需要知道该服务使用的是什么方法,在本例中是post。
现在我们需要知道可以调用该服务的地址。在文档中指定为:https://app.fasttestweb.com/FastTest/api/auth/simple
我们发送什么:
{
"username": "string",
"pwd": "string",
"apiKey": "string",
"timeSent": 0,
"tokenTTL": 0
}
切换到模型可以看到参数说明。您甚至可以直接在页面中测试这一点,方法是使用给定的值编辑可编辑框,然后按端点规范底部的 "try it out!"。
我们得到什么回应:
{
"apiToken": "string",
"timeGenerated": 0,
"ttl": 0
}
要调用它,有很多方法可以做到这一点,我喜欢将我发送和接收的内容分开 objects/dto,然后 serialize/deserialize 从那个对象到那个对象。由于您已经拥有 json.net,因此您可以这样做 serialize。
您可以指定特定的 json 名称,使其与具有 attribute 的架构相匹配
或者定义一个 strategy.
当您从服务中取回 json 时,您将不得不 deserialize 它。
所以你的 body 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 上可用。
这是一个非常基本的代码示例(未测试):
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 它。
希望对您有所帮助。
虽然我已经在 Dynamics 中开发了一段时间,但我以前从未需要对 API 进行外部调用。
我不知道从哪里开始。任何帮助我指出正确方向的帮助都会非常有帮助。
有问题的 Api 位于此处: http://apidocs.assess.com/
其中有示例显示需要传递给 url (https://app.fasttestweb.com/FastTest/api/swagger.json) 的内容 但老实说,这是我第一次尝试这样做,我对我一直在寻找的信息感到不知所措,并且无法解析为此需要做的事情。
第 1 步当然是从网站生成一个授权令牌。 这需要以这种形式传递(我假设是JSON)。 但是我什至无法弄清楚如何做那部分,或者代码应该是什么样子。如果有人有他们做过的事情的例子,或者可以给我指出一个 link/video 来解决这个问题,那就太棒了。
请注意,我确实在 Visual Studio 中安装了 Newtonsoft.Json,但我找不到关于如何实际来回传递信息的好例子。 先感谢您。
如何在 rest 中调用 API 是开发人员的一种非常常见的做法,因为这是公开数据的常见做法,我强烈建议您阅读该主题,这里有很多很好的资源在那里,这个网站是一个,youtube 是另一个,快速搜索并找到了很多关于它的信息:https://www.youtube.com/results?search_query=intro+to+rest+c%23
对于手头的问题: 大摇大摆的文档告诉你所有你需要知道的来调用你的服务, 以auth服务为例,首先我们需要知道该服务使用的是什么方法,在本例中是post。 现在我们需要知道可以调用该服务的地址。在文档中指定为:https://app.fasttestweb.com/FastTest/api/auth/simple 我们发送什么:
{
"username": "string",
"pwd": "string",
"apiKey": "string",
"timeSent": 0,
"tokenTTL": 0
}
切换到模型可以看到参数说明。您甚至可以直接在页面中测试这一点,方法是使用给定的值编辑可编辑框,然后按端点规范底部的 "try it out!"。
我们得到什么回应:
{
"apiToken": "string",
"timeGenerated": 0,
"ttl": 0
}
要调用它,有很多方法可以做到这一点,我喜欢将我发送和接收的内容分开 objects/dto,然后 serialize/deserialize 从那个对象到那个对象。由于您已经拥有 json.net,因此您可以这样做 serialize。
您可以指定特定的 json 名称,使其与具有 attribute 的架构相匹配 或者定义一个 strategy.
当您从服务中取回 json 时,您将不得不 deserialize 它。
所以你的 body 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 上可用。 这是一个非常基本的代码示例(未测试):
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 它。
希望对您有所帮助。