1. 程式人生 > 其它 >.NET如何呼叫REST介面?

.NET如何呼叫REST介面?

首先咱們再對接之前需要先了解什麼是REST介面,又通過什麼請求,和以往的介面有什麼區別:

Rest,Representational State Transfer的縮寫,資源(資料)的表示(json、xml)+狀態轉化(http verb動作)
使用URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
用來規範客戶端如何在HTTP 層與 API 提供方進行資料互動 。

通俗的來講比如一個Uri為:( xxxxxx.cn/func/getdata);
這樣的一個Uri你看不出來他是什麼狀態的請求方式,是post?get?put?delete? 你不知道,但是這就是rest介面的特點,通過型別來區分相同uri的不同型別操作,顧名思義:使用ajax的時候根據type內的不同引數來完成不同的操作

基本的定位和概念清楚之後,我們來看看你如何在.net中實現這一操作,其實不難,以下是我個人的實現:

Rest介面地址:http://域名+埠號/xxxx/xxxx
介面引數字串: “{“requestname”:“xxxxx”, “function”:“xxxxxxx”}”;

    /// <summary>
    /// POST提交REST介面
    /// </summary>
    /// <param name="str">介面引數字串</param>
    /// <param name="url">介面地址</param>
    /// <returns></returns>
    public string rest(string str, string url)
    {
        Uri address = new Uri(url);///轉換為uri,加以標記
        string ttt = "";///用來儲存返回結果
        // 建立webrequest
        HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
        // Set type to POST
        request.Method = "POST";///方式可以為post,get,put,delete
        request.ContentType = "text/plain; charset=utf-8";   //"application/x-www-form-urlencoded";//內容編碼格式
        request.Timeout = 180000;
        StringBuilder data = new StringBuilder();
        data.Append(str);///追加介面引數字串

        // 設定位元組陣列用來存放我們請求的引數
        byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());

        // 設定請求頭的長度
        request.ContentLength = byteData.Length;

        // 寫入待請求的引數
        using (Stream postStream = request.GetRequestStream())
        {
            postStream.Write(byteData, 0, byteData.Length);
        }

        try
        {
            // 獲取響應
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                //  獲取響應資料流
                StreamReader reader = new StreamReader(response.GetResponseStream());

                 //把響應後的資料從頭讀取到尾
                ttt = reader.ReadToEnd();
            }
            return ttt;///返回呼叫
        }
        catch (Exception e)
        {
            return e.Message;///丟擲錯誤資訊
            throw;
        }
    }

以上就是個人程式碼實現的具體情況,這是封裝好的方法

有的同學可能注意到了我這個方法中吧url標記為url了,為什麼這麼做呢:
url表示在整個網路範圍內,你可以同通過這個url來找到我現在所處的位置,但是我想讓你找到我這個人,你不認識我,不知道我叫什麼,你肯定找不到我,所以這個時候我們需要一個命名或者說一種標記,來表明我的身份特徵,這個時候就用到了uri這個東西,url偏向於定位,而uri則用於標記或表明,所以,在webrequest中宣告一個帶標記的url則可以清楚地訪問到這個介面並進行對接
————————————————
版權宣告:本文為CSDN博主「Loyar」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:

https://blog.csdn.net/Loyar/article/details/107317833