聊聊asp.net中Web Api的使用
扯淡
? ? 隨著app應(yīng)用的崛起,后端服務(wù)開發(fā)的也越來越多,除了很多優(yōu)秀的nodejs框架之外,微軟當(dāng)然也會(huì)在這個(gè)方面提供更便捷的開發(fā)方式。這是微軟一貫的作風(fēng),如果從開發(fā)的便捷性來說的話微軟是當(dāng)之無愧的老大哥,只是魚和熊掌不能兼得,各種語(yǔ)法糖帶來開發(fā)的便利勢(shì)必會(huì)犧牲程序運(yùn)行的性能,這是無可避免的,通用和效率永遠(yuǎn)是需要程序員去取舍的話題。扯淡到這就完了,下來就聊聊今天的主角web api,web api 是mvc4.0之后出現(xiàn)的一種技術(shù)吧,他的創(chuàng)建和帶來的便利我就不介紹了。這邊文章主要聊聊,我對(duì)web api開發(fā)的一些理解。
?
話題一:[FromBody]特性修飾符
FromBody是一個(gè)修飾參數(shù)的特性,比如:public void Post([FromBody]string name),那么他的作用是什么呢,其實(shí)他的作用是查詢post請(qǐng)求中參數(shù)為name的值。
要注意的是:[FromBody]只能修飾單個(gè)參數(shù),如果是多個(gè)參數(shù)的話,就要封裝成對(duì)象進(jìn)行數(shù)據(jù)專遞了,比如:public void Post([FromBody]string name,[FromBody]int id)是取不到值的,要把id和name封裝成Userinfo對(duì)象,使用?public void Post([FromBody]Userinfo user)進(jìn)行調(diào)用。
?
話題二:post傳遞多個(gè)不同對(duì)象的參數(shù)
已經(jīng)post請(qǐng)求需要使用[FromBody]特性修飾符接收,但是FromBody只能接收單個(gè)參數(shù),如果需要傳遞不同對(duì)象的輸出就比較麻煩了,新建實(shí)體對(duì)象成本太大,也不能完全適應(yīng)適應(yīng)的類型,這個(gè)時(shí)候需要使用JObject來處理,代碼如下:
jQuery.post("/Api/Userinfo/Add/", {mobile: "18049579804",pwd: "123456",smsCode: "12346",t: new Date().getTime() }, function (data) {if (data) {document.writeln(data);} }); public string Add([FromBody]JObject pdata) {string mobile = Convert.ToString(pdata["smsCode"]);string pwd = Convert.ToString(pdata["pwd"]);string smsCode = Convert.ToString(pdata["smsCode"]); }?
話題三:請(qǐng)求方式(Get & Post)
關(guān)鍵字區(qū)分:Get請(qǐng)求或者Post請(qǐng)求,可以用自身的關(guān)鍵字來區(qū)分,比如:GetUser(int id)肯定為get請(qǐng)求,Getxxx(params param)等格式為Get請(qǐng)求,post同理。當(dāng)然還有一種方式,是沒有關(guān)鍵字修飾的方法,比如:FindUser這種情況下,這種請(qǐng)求下默認(rèn)是Post請(qǐng)求的Get請(qǐng)求就會(huì)報(bào)405的錯(cuò)。
?
話題四:返回json格式的結(jié)果
這個(gè)會(huì)簡(jiǎn)單設(shè)置返回值為Net自帶的Json格式即可,可以返回JObject或JArray都是可以用ajax接收json對(duì)象的。代碼如下:
public JObject PostFindUser([FromBody]Userinfo user) {JObject res = new JObject();res["name"] = string.Format("{0}是好人~", user.Name);return res; }?
話題五:路由設(shè)置
本身的路由不是很好,需要設(shè)置WebApiConfig.cs配置為:控制/動(dòng)作/參數(shù)
config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{Action}/{id}",defaults: new { id = RouteParameter.Optional } );?
?
?題外話:webapi獲取http header信息代碼:Request.Headers.GetValues("xxx")
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的聊聊asp.net中Web Api的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用MVP模式写出可维护的优美Andro
- 下一篇: JS怎样捕获浏览器关闭时间弹出自定义对话