.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

posted @ 2022-03-26 11:38  大大龄码农  阅读(581)  评论(0编辑  收藏  举报