ASP.NET在MVC模式下使用rest的方法
序
最近做了下一个MVC项目,需要用rest接口和用java写的应用程序进行通信,包括数据的接收和发送,所以我会从实用的角度全面讲解它的用法
首先,创建休息服务
首先,创建一个Asp.Net Web应用程序(我使用的是Visual Studio 2013,它内置了Web API2)。
在模板中选择空,并检查WebAPI。单击“确定”创建一个空的WebAPI服务。
此时只有一个没有任何功能的空项目。在进行下一步之前,我们先来看看REST的基本操作模型,大致可以分为以下四种类型:
后创建资源获取-检索资源放-更新资源删除-删除资源是一个经典的CRUD模型。在Web API中实现这样的模型非常简单,您可以使用向导直接构建控制器
如果使用传统向导,请记住删除向导后面的1:
默认模板内容如下:
公共类values controller : APi controller {//GET API/controller publicienumerablesting GET(){ returnnewstring[]{ ' value 1 ',' value 2 ' };}//GET API/controller/5 public string GET(int id){ return ' value ';}//POST API/controller public void POST([from body]字符串值){ }//PUT API/controller/5 public void PUT(int id,[from body]string value){ }//delete API/controller/5 public void delete(int id){ } }这实际上已经帮助我们实现了一个基本的服务,让其他人可以访问我们服务中的方法。
第二,调用其他应用的rest服务
1.RestClient类
为了便于使用,我们需要在客房一侧封装rest类。话不多说,我们直接看这个类的代码:
使用系统;使用系统。集合。通用;使用系统IO;使用系统Linq .使用系统。净值;使用系统。文字;使用系统网络.命名空间石油数字公司.A2_A27 .Web{公共类RestClient {公共字符串EndPoint { get设置;} //请求的全球资源定位器(统一资源定位符)地址公共HttpVerb方法{获取设置;} //请求的方法公共字符串ContentType { get设置;} //格式类型:我用的是应用程序/json,文本/xml具体使用什么,看需求吧公共字符串PostData { get设置;} //传送的数据,当然了我使用的是json字符串public rest client(){ EndPoint=' ';方法=HttpVerb .GETcontent type=' application/x-www-form-URL编码';PostData=} public RestClient(字符串端点){ EndPoint=endPointMethod=Httpverb .GETcontent类型=' application/JSON ';PostData=} public rest客户端(字符串EndPoint,HttpVerb方法){ EndPoint=endpoint方法=方法;内容类型=' application/JSON ';PostData=} public rest客户端(字符串EndPoint,HttpVerb方法,字符串PostDATa){ EndPoint=EndPoint;方法=方法;内容类型=' application/JSON ';PostData=postData}公共休息客户端(字符串EndPoint,HttpVerb方法,字符串postData,字符串ContentType){ EndPoint=EndPoint;方法=方法;content type=ContentTypePostDATA=PostDATA }公共字符串make request(){ return make request(" ");}公共字符串MakeRequest(字符串参数){ var request=(Httpwebrequest)WebRequest .创建(EndPoint参数);请求。方法=方法. ToString();请求ContentType=ContentTypeif(!字符串IsNullOrEmpty(后置数据)方法==HttpVerb .POST)//如果传送的数据不为空,并且方法是post { var encoding=new utf8 encoding();变量字节=编码GetEncoding('iso-8859-1 ').GetBytes(PostDATa);//编码方式按自己需求进行更改,我在项目中使用的是UTF-8请求内容长度=字节。长度;使用(var writeStream=请求.get request stream()){ write stream .写入(字节,0,字节。长度);} } if(!字符串IsNullOrEmpty(后置数据)方法==HttpVerb .PUT)//如果传送的数据不为空,并且方法是put { var encoding=new utf8 encoding();变量字节=编码GetEncoding('iso-8859-1 ').GetBytes(PostDATa);//编码方式按自己需求进行更改,我在项目中使用的是UTF-8请求内容长度=字节。长度;使用(var writeStream=请求.get request stream()){ write stream .写入(字节,0,字节。长度);} }使用(var response=(HttpWebResponse)请求GetResponse()){ var response值=string .空的;如果(响应。状态代码!=HttpStatusCode .OK) { var消息=字符串。格式('请求失败。收到HTTP {0},响应状态代码);引发新的应用程序异常(消息);} //使用(var responseStream=响应)抓取响应. GetResponseStream()){ if(responseStream!=null)使用(var reader=新流读取器(响应流)){响应值=读取器.ReadToEnd();} }返回响应值} } }公共枚举HttpVerb { GET,//方法常用的就这几样,当然你也可以添加其他的获取:获取帖子:修改放:写入删除:删除开机自检、放入、删除}}2、RestClient类使用
有了这个类后我们就很方便的去调用别人的休息服务了,使用方法如下:
,基本的调用:
var client=new rest client();string EndPoint=@ ' http : \ \ MyRestServiCe。com \ API \ ';var客户端=新的rest客户端(EndPoint);var json=客户端提出请求();,如果你想带入参数
var json=客户端MakeRequest('?param=0’);,使用最多的方式
var client=new rest client();客户EndPoint=@ ' http : \ \ MyRestServiCe。com \ API \ ';客户内容类型=' application/JSON ';客户方法=HttpVerb .开机自检;客户post data=“{ PostData: value }”;var json=客户端提出请求();三、我自己项目中的使用
1、首先我测试了一下,我调用我自己的休息服务的带参的得到方法,当然我这里传的参数直接写在全球资源定位器(统一资源定位符)的后面在,参数形式是字符串,所以接收的得到方法的形参也要改成字符串,这样你就
可以接收到传过去的参数了。当然别人应用程序也是可以调的。只要把全球资源定位器(统一资源定位符)给他就行了。
///摘要///从接口中获取当前用户所有信息////summary///param name=' userId '用户ID/param///返回jsson对象/返回公共字符串GetCurrentUserInfo(){ string userId=GetCurrentUserId();string EndPoint=' http://localhost :100/Api/restServiCe/' UserID;var客户端=新的rest客户端(EndPoint);var userInfo=客户端提出请求();返回用户信息}2、接下来,我要开始试用爪哇岛写的应用程序下的休息服务了,我通过我传过去的用户身份获取到了用户的所有信息,当然我在项目中使用了缓存技术,还将返回回来的json字符串转换成了json对象,以便我后面好用linq对其进行操作,关于linq to json可以参考我的linq专题相关文章,我在项目中的代码是酱子的:
///摘要///从接口中获取用户所有信息////summary///param name=' userId '用户ID/param////返回/返回公共静态作业对象CacheUser(){ try { string currentUser=GetCurrentUserId();if (HttpRuntime .缓存。get(' user $ ' GetCurrentUserid())==null){ string EndPoint=' http://66。66 .6663:6666/das base/restSerVices/DataCollectionServiCe/getuser permissions ';string PostData=' JSondata={ \ ' UserCode ' : ' kfry \ ',\ ' SystemID ' : ' 1E 1A 7 AC 94 BFC 41D 4 BEBEBEED 8942 EB 69689 \ ' } ';var客户端=新的rest客户端(EndPoint,HttpVerb .POST,postData,' application/x-www-form-URL编码');var u=客户端提出请求();作业对象用户信息=作业对象。解析(u);//插入缓存HttpRuntime .缓存。插入('用户$ '当前用户,用户信息,空,系统日期时间。添加分钟(30),时间跨度.零);}返回(JObject)HttpRuntime .缓存。获取(“user $”GetCurrentUserid());}捕获(例外情况){ 0抛出新的应用程序异常(“”获取用户信息出错:' ex .消息);} }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:ASP.NET在MVC模式下使用rest的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。