首先咱们再对接之前需要先了解什么是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则可以清楚地访问到这个接口并进行对接
以上就是我的工作实战分享,如有不足或错误请大神积极指正!