釘釘開發系列(三)API的呼叫
阿新 • • 發佈:2019-01-01
《釘釘開發系列(二)結構封裝》對相應的結構進行了封裝,這樣在後續的呼叫中就會相當方便。這裡舉GET和POST各一個例子,其他的API可以參照釘釘的開發文件。
比如以GET方式獲取部門列表
#region FetchDepartList public static DepartResultSet FetchDepartList() { string apiurl = FormatApiUrlWithToken(Urls.department_list); var result = Analyze.Get<DepartResultSet >(apiurl); return result; } #endregion
public static String FormatApiUrlWithToken(String url, bool forceUpdate = false)
{
UpdateAccessToken(forceUpdate);
string apiurl = $"{url}?{Keys.access_token}={AccessToken.Value}";
return apiurl;
}
其中UpdateAccessToken是更新票據,請參看釘釘系列的文章《釘釘開發系列(一)access_token的獲取namespace DDSDK
{
public class DepartResultSet :ResultPackage
{
public List<Depart> department { get; set; }
}
}
<pre name="code" class="csharp">namespace DDSDK { /// <summary> /// 部門 /// </summary> public class Depart { /// <summary> /// 部門id /// </summary> public string id { get; set; } /// <summary> /// 部門名稱 /// </summary> public string name { get; set; } /// <summary> /// 父部門id,根部門為1 /// </summary> public string parentid { get; set; } /// <summary> /// 是否同步建立一個關聯此部門的企業群, true表示是, false表示不是 /// </summary> public bool createDeptGroup { get; set; } /// <summary> /// 當群已經建立後,是否有新人加入部門會自動加入該群, true表示是, false表示不是 /// </summary> public bool autoAddUser { get; set; } } }
以POST請求來發送資訊
/// <summary>
/// 傳送訊息
/// </summary>
/// <param name="toUser">目標使用者</param>
/// <param name="toParty">目標部門.當toParty和toUser同時指定時,以toParty來發送。</param>
/// <param name="content">訊息文字</param>
/// <returns></returns>
private static SendMessageResult SendTextMsg(string toUser, string toParty, string content)
{
var txtmsg = new
{
touser = toUser,
toparty = toParty,
msgtype = MsgType.text.ToString(),
agentid = ConfigHelper.FetchAgentID(),
text = new
{
content = content
}
};
string apiurl = FormatApiUrlWithToken(Urls.message_send);
string json = JsonConvert.SerializeObject(txtmsg);
var result = Analyze.Post<SendMessageResult>(apiurl, json);
return result;
}
namespace DDSDK
{
public class SendMessageResult : ResultPackage
{
public string receiver { get; set; }
}
}
如果需要將一些資訊額外的加入到返回的結果中,可以在相關的類裡面定義相應的屬性,然後在返回結果為OK後面賦值資訊,比如
var result = Analyze.Post<SendMessageResult>(apiurl, json);
if (result.IsOK())
{
result.SendTime = DateTime.Now;
}
至此,服務端的API呼叫已經可以使用了,其他的API可以參照開發文件。對於客戶端的API呼叫還需要進一步獲取JS的票據,並且需要做快取,這將在後續中說到。
轉載請註明出處。