亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

從簡單類型到復雜類型的參數傳遞用例,以及傳遞簡單string類型的解決辦法

2019-11-14 16:15:22
字體:
來源:轉載
供稿:網友

一,簡單類型的傳值

 
比如 public Users Get(int id) ,它可以使用兩種方式獲?。?/div>
 
api/default/5
$.get("/api/default",{id:90}, function (data) {/* 處理邏輯 */});
前者不需要注明參數名,后者適用于存在多個簡單參數的情況,例如比較實際的案例以及對應的獲取方式是:
 
public Users Get(int id, int id2)
$.get("/api/default",{id:90,id2:88}, function (data) {});
二,簡單類型傳值中涉及到string的傳遞
 
對于簡單類型的參數傳值,唯一有一點可以稱得上是問題的問題,便是遇到例如:public string Post(string v) 這樣的情況,如果你直接post一個參數名為v的字符串過去,例如:$.post("/api/testString",{ v: "i want testString" }, function (data) {}); ,那么結果是無功而返的:
 
 
 
 
通過搜索stackoverflow以及encosia(詳見這里),下面是解決方案:
 
首先為參數覆蓋上[FromBody]特性,比如 public string Post([FromBody]string v),然后:
 
解決方案1:$.post("/api/testString", "=i want testString" , function (data) {}); //在前面加一個等于號
解決方案2:$.post("/api/testString",{ "": "i want testString" }, function (data) {}); //傳遞一個空參數名
問題是解決了,可是本人也嘮叨一句:這像什么話。
 
誠然道有些朋友會說“Web API不是這樣使用的,它是為某某某情況……你應該構造一個對象……”,但是,既然存在如此的使用情況,本文所針對就是可能出現的問題而作出解決方案。
 
 
 
三,傳遞復雜類型:
 
首先定義兩個類型,
 
    public class Users
    {
        public int uid { get; set; }
 
        public string username { get; set; }
    }
    public class DoubleStringPRameter
    {
        public string Pram1 { get; set; }
 
        public string Pram2 { get; set; }
    }
對于需要發送兩個字符串參數的情況,必須傳遞一個對象了:
 
public string Post(DoubleStringPrameter pram)
$.post("/api/testStringUsingObject", { Pram1: "參數1的值", Pram2: "參數2的值" }, function (data) {}); //不需要指定參數名
而對于需要傳遞更加復雜的對象,例如同時傳遞 DoubleStringPrameter 和 Users ,就需要這么封裝:
 
 
 
 
    public class using2ObjController : ApiController
    { 
        public string Post(IMultiObj obj)
        {
            return "uid:" + obj.User.uid + ",username:" + obj.User.username + "||pram1:" + 
                obj.StringPrameter.Pram1 + ",pram2:" + obj.StringPrameter.Pram2;
        } 
    }
 
    public class IMultiObj //定義一個類型封裝
    {
        public DoubleStringPrameter StringPrameter { get; set; }
 
        public Users User { get; set; }
    }
 
 
 
然后這么傳遞:
 
      $.post("/api/using2Obj", { User: { uid: '80909', username: 'amazon' }, StringPrameter: { Pram1: '參數1的值', Pram2: '參數2的值' } },
 
  function (data) {});
 
 
 
 
 
對于簡單類型傳值中涉及到string的傳遞,本人的意見是:作為一個API,如果提供了某些功能,那么就必須實現,如果做不到或者不愿意做,就應該在編譯期間斷絕問題發生的可能(就不應該讓 Post(string a)、Post(string a, string b)、Post(Users  u1, Users u2) 通過編譯),而不應是在使用期間采取對用戶做出 “方言” 級的限制,這已經有違強類型語言的設計初衷,試想這樣的情況:某一夜某個零時工打瞌睡寫了Post(Users  user, Content content),編譯過去了,一個月后客戶端那邊都已做了2萬行代碼,到時候才說不能這樣使用(不能用你還寫出來干什么),這便是設計上的失職了。
 
如今這些不是問題的問題在2.0上依然存在,它既是Bug,同時也不是Bug。
 
對此本人更偏向于使用WCF或MVC的return Json(),出于Web API的問題本身,而作此文。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美日韩精品免费观看视频| 欧美亚洲日本网站| 国产精品成人av在线| 俺去了亚洲欧美日韩| 久久久久国色av免费观看性色| 91丨九色丨国产在线| 精品一区二区三区三区| 成人国产在线视频| 欧美视频在线视频| 亚洲人成在线观看| 亚洲已满18点击进入在线看片| 成人h视频在线| 91网站在线看| 精品久久久久久久久久久久| 98视频在线噜噜噜国产| 中文字幕精品www乱入免费视频| 色综合视频一区中文字幕| 欧美精品久久久久a| 一区二区三区国产视频| 亚洲女人天堂色在线7777| 国产精品99久久久久久白浆小说| 欧美日韩国产二区| 日韩精品视频观看| 精品亚洲夜色av98在线观看| 日韩美女在线播放| 亚洲国产一区二区三区在线观看| 精品国偷自产在线视频99| 日韩精品视频在线播放| 日韩欧美在线视频观看| 成人美女av在线直播| 精品中文字幕在线2019| 色偷偷噜噜噜亚洲男人| 亚洲欧美制服第一页| 精品国产乱码久久久久酒店| 日韩av大片在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美电影第一页| 欧美精品www| 国产香蕉一区二区三区在线视频| 伊人成人开心激情综合网| 国产91|九色| 久久久久久久久久久网站| 日韩av网址在线| 日本精品免费观看| 国产精品黄页免费高清在线观看| 91中文字幕一区| 97av在线播放| 一区二区欧美日韩视频| 日本午夜在线亚洲.国产| 精品国产91久久久久久老师| 欧美视频第一页| 亚洲天堂免费视频| 色777狠狠综合秋免鲁丝| 国产丝袜一区视频在线观看| 亚洲精品国产电影| 欧美网站在线观看| 日韩高清电影好看的电视剧电影| 国产精品aaa| 国产97人人超碰caoprom| 国产精品午夜国产小视频| 欧美午夜影院在线视频| 亚洲一区二区三区在线免费观看| 国产日本欧美一区二区三区| 欧美日韩免费区域视频在线观看| 久久精品国产96久久久香蕉| 国产成人精品日本亚洲| 97精品一区二区视频在线观看| 日韩毛片在线观看| 国产精品久久久久久久7电影| 国内精品国产三级国产在线专| www.日韩av.com| 亚洲桃花岛网站| 亚洲精品网址在线观看| 国产精品亚发布| 亚洲精品wwwww| 欧美精品一区三区| 岛国av一区二区三区| 2019日本中文字幕| 免费av在线一区| 欧美精品成人91久久久久久久| 国产精品嫩草影院久久久| 日韩中文在线不卡| 午夜精品国产精品大乳美女| 成人乱色短篇合集| 日韩av片免费在线观看| 成人精品视频久久久久| 欧美另类极品videosbestfree| 国产精品成人aaaaa网站| 亚洲欧美国产va在线影院| 琪琪亚洲精品午夜在线| 欧美亚州一区二区三区| 大桥未久av一区二区三区| 国产亚洲精品高潮| 伊人伊成久久人综合网小说| 欧美黑人狂野猛交老妇| 2019中文在线观看| 久久资源免费视频| 日韩av免费在线观看| 久久精品视频在线| 日韩美女激情视频| 91精品国产99久久久久久| 亚洲女人被黑人巨大进入| 美女国内精品自产拍在线播放| 日韩视频在线免费观看| 成人免费午夜电影| 日韩国产精品一区| 亚洲毛茸茸少妇高潮呻吟| 亚洲综合日韩在线| 亚洲美女视频网| 91色在线视频| 午夜欧美不卡精品aaaaa| 国产成人精品电影久久久| 亚洲曰本av电影| 日韩av在线免费| 国产97在线|日韩| 国产丝袜精品视频| 97超级碰碰人国产在线观看| 日韩欧美在线一区| 日韩69视频在线观看| 国产精品久久久久久久久男| 国模精品视频一区二区三区| 91精品91久久久久久| 久久精品久久久久久国产 免费| 国产成人欧美在线观看| 精品伊人久久97| 日韩在线国产精品| 日韩美女视频免费看| 亚洲性线免费观看视频成熟| 日韩免费不卡av| 亚洲第一色中文字幕| 国产区精品视频| 中文.日本.精品| 日本成人在线视频网址| 久久亚洲精品小早川怜子66| 91超碰中文字幕久久精品| 亚洲第一av网站| 国产亚洲a∨片在线观看| 久久久www成人免费精品| 一本大道香蕉久在线播放29| 国产成+人+综合+亚洲欧美丁香花| 欧美黑人巨大精品一区二区| 91网在线免费观看| 国产精品久久久久久久久借妻| 色噜噜久久综合伊人一本| 国产亚洲精品久久久优势| 欧美日韩国产色| 国产精品久久久91| 日韩少妇与小伙激情| 亚洲欧洲中文天堂| 欧美激情一区二区久久久| 色偷偷888欧美精品久久久| 欧美华人在线视频| 日韩精品在线观看视频| 亚洲人永久免费| 69视频在线免费观看| 91a在线视频| 俺去亚洲欧洲欧美日韩| 欧美在线欧美在线| 欧美成人免费全部观看天天性色| 精品欧美aⅴ在线网站| 亚洲日本成人女熟在线观看| 国产精品久久婷婷六月丁香| 66m—66摸成人免费视频| 最近2019年中文视频免费在线观看|