1. 程式人生 > >釘釘開發系列(三)API的呼叫

釘釘開發系列(三)API的呼叫

釘釘開發系列(二)結構封裝》對相應的結構進行了封裝,這樣在後續的呼叫中就會相當方便。這裡舉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的票據,並且需要做快取,這將在後續中說到。

轉載請註明出處。