您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)C#中WebApi Get請求方式傳遞實(shí)體參數(shù)的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、實(shí)體類如何轉(zhuǎn)換成QueryString這種鍵值對格式?
叫鍵值對可能不夠?qū)I(yè),叫NameValueCollection?
很遺憾,也沒找到啥現(xiàn)成的例子。
最后祭出反射,來拼裝QueryString
二、服務(wù)器端如何提取QueryString里參數(shù),自動變成一個實(shí)體類?
參數(shù)前面標(biāo)注[FromUri]特性
上代碼。
實(shí)體類:
namespace BaseLT.Core.Contract { public class Request { public Request(); public int Top { set; } public int PageSize { get; set; } public int PageIndex { get; set; } public string OrderBy { get; set; } public int SortState { get; set; } public bool CompareObject<T>(T obj1, T obj2); public void ExtjsInit(); } }
WebApi服務(wù)器端:
public class TankController : ApiController { [HttpGet] [Route("api/tank/matters/public/{id=0}")] public IEnumerable<Matter> Get(int id,[FromUri]Request req) { return do sth; } }
客戶端:
[TestMethod] public void TestTankApi() { string url = "http://localhost/ybjzuser.api/api/tank/matters/public/"; url += getQueryString(new Request() { PageIndex = 1, PageSize = 100 }); string re; using (WebClient webClient = new WebClient()) { webClient.Encoding = Encoding.GetEncoding("utf-8"); re = webClient.DownloadString(url); } Assert.AreNotEqual(null, re); Console.WriteLine(re); } static string getQueryString(Request req) { StringBuilder query = new StringBuilder("?"); PropertyInfo[] propertys = req.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (pi.CanRead) { query.Append($@"{pi.Name}={pi.GetValue(req)}&"); } } return query.ToString(); }
關(guān)于“C#中WebApi Get請求方式傳遞實(shí)體參數(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。