.NET 对接请求REST接口(拓展知识)

严天逸
2023-12-01

.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则可以清楚地访问到这个接口并进行对接

以上就是我的工作实战分享,如有不足或错误请大神积极指正!

 类似资料: