NET API 中的 FromRoute、FromQuery、FromBody 用法
時(shí)間:2023-08-30 12:57:42
最近技術(shù)交流群里,還有不少小伙伴不知道 FromRoute、FromQuery、FromBody 這幾個(gè)特性是怎么使用的,也不清楚它們之間的區(qū)別在哪里,特意寫下這個(gè)文章,希望可以幫助到迷茫的小伙伴。
(相關(guān)資料圖)
在API開發(fā)過(guò)程中,我們先要確定我們的接口是干嘛的,獲取請(qǐng)求數(shù)據(jù)用 GET,上傳使用 POST,修改使用 PATCH,刪除是 DELETE,通常使用這4個(gè)就足夠了。
接著下一步,就是參數(shù)放在哪了,通常:
(1)GET請(qǐng)求的參數(shù),是以u(píng)rl?xxx=value1&xxx=value 這樣的方式進(jìn)行傳承;
(2)POST、PATCH,則是放在 body里,當(dāng)然也可以放在form中;
(3)而所有的請(qǐng)求方式,都是支持通過(guò) url 傳承的,包括通過(guò) route 傳承;
好久沒(méi)寫文檔了,都不知道怎么寫了,還是直接上代碼吧;
我們新建一個(gè)API工程,過(guò)程我就不演示了;建一個(gè)Controller,我這里起名為 MethodsController;還需要建一個(gè)接收參數(shù)的實(shí)體類,當(dāng)然也可以不使用實(shí)體類,個(gè)人建議是使用;
實(shí)體類 public class Parameter{ public string? Method { get; set; } public string? Value { get; set; }}
Url 傳參 [HttpGet]public async TaskGetQueryAsync([FromQuery] Parameter query){ return await Task.FromResult(query);}
示例 Route 傳參 [HttpGet(\"{method}/{value}\")]public async TaskGetRouteAsync([FromRoute] Parameter route){ return await Task.FromResult(route);}
示例 Body傳參 [HttpPost]public async TaskPostAsync([FromBody] Parameter body){ return await Task.FromResult(body);}
示例 混合 [HttpPatch(\"{method}/{value}\")]public async Task>PatchAsync( [FromRoute] Parameter route, [FromQuery] Parameter query, [FromBody] Parameter body){ var result = new Dictionary() { [\"route\"] = route, [\"query\"] = query, [\"body\"] = body }; return await Task.FromResult(result);}
示例
public class Parameter{ public string? Method { get; set; } public string? Value { get; set; }}[HttpGet]public async TaskGetQueryAsync([FromQuery] Parameter query){ return await Task.FromResult(query);} 示例 Route 傳參 [HttpGet(\"{method}/{value}\")]public async TaskGetRouteAsync([FromRoute] Parameter route){ return await Task.FromResult(route);}
示例 Body傳參 [HttpPost]public async TaskPostAsync([FromBody] Parameter body){ return await Task.FromResult(body);}
示例 混合 [HttpPatch(\"{method}/{value}\")]public async Task>PatchAsync( [FromRoute] Parameter route, [FromQuery] Parameter query, [FromBody] Parameter body){ var result = new Dictionary() { [\"route\"] = route, [\"query\"] = query, [\"body\"] = body }; return await Task.FromResult(result);}
示例
[HttpGet(\"{method}/{value}\")]public async TaskGetRouteAsync([FromRoute] Parameter route){ return await Task.FromResult(route);} 示例 Body傳參 [HttpPost]public async TaskPostAsync([FromBody] Parameter body){ return await Task.FromResult(body);}
示例 混合 [HttpPatch(\"{method}/{value}\")]public async Task>PatchAsync( [FromRoute] Parameter route, [FromQuery] Parameter query, [FromBody] Parameter body){ var result = new Dictionary() { [\"route\"] = route, [\"query\"] = query, [\"body\"] = body }; return await Task.FromResult(result);}
示例
[HttpPost]public async TaskPostAsync([FromBody] Parameter body){ return await Task.FromResult(body);} 示例 混合 [HttpPatch(\"{method}/{value}\")]public async Task>PatchAsync( [FromRoute] Parameter route, [FromQuery] Parameter query, [FromBody] Parameter body){ var result = new Dictionary() { [\"route\"] = route, [\"query\"] = query, [\"body\"] = body }; return await Task.FromResult(result);}
示例
[HttpPatch(\"{method}/{value}\")]public async Task>PatchAsync( [FromRoute] Parameter route, [FromQuery] Parameter query, [FromBody] Parameter body){ var result = new Dictionary() { [\"route\"] = route, [\"query\"] = query, [\"body\"] = body }; return await Task.FromResult(result);} 示例
寫得不好,手生了,大家有什么想了解的歡迎在評(píng)論區(qū)留言
相關(guān)稿件
NET API 中的 FromRoute、FromQuery、FromBody 用法
手機(jī)號(hào)被十年前工作過(guò)的公司申報(bào)為企業(yè)聯(lián)系電話致騷擾不斷 涉事公司被判道歉并賠償
文旅部部長(zhǎng)胡和平會(huì)見美國(guó)商務(wù)部長(zhǎng)雷蒙多
鄂州市優(yōu)待證申領(lǐng)實(shí)現(xiàn)常態(tài)化,70天左右可到申請(qǐng)人手中
梁朝偉與劉德華多年后再合作,年齡相仿,一個(gè)顯年輕,一個(gè)顯老態(tài)
“電力”十足、產(chǎn)業(yè)興旺!??悼h馬橋供電所蓄足“滿格電”為特色產(chǎn)業(yè)保駕護(hù)航
外交部:除美國(guó)外 哪國(guó)支持日本排海? 美國(guó)自己都限制進(jìn)口!
學(xué)生趴桌午休被收200元 官方:合理!有教育局文件,自愿原則!
開學(xué)家長(zhǎng)第一課暨“首都最美家庭”宣講活動(dòng)舉辦
記者:盧卡庫(kù)明天接受羅馬體檢,計(jì)劃是對(duì)陣米蘭時(shí)坐在替補(bǔ)席上
異動(dòng)快報(bào):*ST交昂(600530)8月29日14點(diǎn)33分觸及漲停板
零跑汽車上半年虧22億、單車虧超5萬(wàn) 毛利率仍未轉(zhuǎn)正
關(guān)于開展“清朗·杭州亞運(yùn)會(huì)和亞殘運(yùn)會(huì)網(wǎng)絡(luò)環(huán)境整治”專項(xiàng)行動(dòng)的通知
愛麗家居:公司生產(chǎn)SPC產(chǎn)品,SPC產(chǎn)品的銷售收入約占營(yíng)業(yè)收入的10%左右
吉首大學(xué)賈輝獲2022年度“中國(guó)大學(xué)生自強(qiáng)之星”獎(jiǎng)學(xué)金
別把華為當(dāng)神仙,這個(gè)問(wèn)題不解決,超越蘋果堪比登天
創(chuàng)美藥業(yè)上半年?duì)I收同比增20.24% 月內(nèi)股價(jià)實(shí)現(xiàn)翻倍漲幅
中報(bào)觀察 | 金茂服務(wù)成長(zhǎng)曲線
國(guó)銀金租(01606)與信利(仁壽)高端顯示科技訂立融資租賃合同
不用賠100億!傳3M公司(MMM.US)同意支付超過(guò)55億美元解決軍用耳塞訴訟
教育頻道
數(shù)據(jù)里看發(fā)展 我國(guó)海水水質(zhì)整體持續(xù)向好
2021立冬是幾月幾號(hào)幾點(diǎn)幾分(2021年立冬是什么時(shí)候幾月幾日幾點(diǎn) 立冬是什么時(shí)候)
投資中應(yīng)該如何規(guī)劃退休金 學(xué)習(xí)這些技巧更好養(yǎng)老
“汽車+元宇宙”激起產(chǎn)業(yè)創(chuàng)新火花
教育部等十部門聯(lián)合印發(fā)《國(guó)家銀齡教師行動(dòng)計(jì)劃》
透過(guò)平臺(tái)看信心丨1900多萬(wàn)筆貨運(yùn)運(yùn)單中的經(jīng)濟(jì)新活力


