難道沒有人吐槽 Asp.net Web Api 的嗎

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   color   os   sp   for   

一個APP新項目為了趕時髦,用上了Asp.net Web API,可能我不是太熟悉,經過我幾天潛心研究,web api 確實沒啥用,簡直屬於狗尾續貂之作。

新建立一個api controller,大概方法如下

public IEnumerable<string> Get();public string Get(int id);public void Post([FromBody]string value);public void Put(int id, [FromBody]string value);public void Delete(int id);

 

這幾個方法的傳回值顯然不能滿足要求,比如,當iOS或Andriod端請求刪除 ,刪除有沒有成功,無從知曉,所以必須對返回結果進行封裝,類似

public class MyResponse    {        public int ErrCode { get; set; }        public string ErrMsg { get; set; }        public object Data { get; set; }    }

 

那麼 api controller 方法變成

public MyResponse Get();public MyResponse Get(int id);public MyResponse Post([FromBody]string value);public MyResponse Put(int id, [FromBody]string value);public MyResponse Delete(int id);

那麼問題來了------------------------------------------------

1.在 public MyResponse Get(int id); 方法中,如果Content-Type為 application/xml,那麼則會報序列化錯誤,有沒有,不能很方便的返回XML,我的解決方案是:在global裡移除XmlFormatter,用戶端一律用 application/json請求

public MyResponse Get(int id){            var model = UserRepository.Find(id);            return new MyResponse()            {                Data = model            }; }

如果這樣的話,為什麼不用mvc中的 JsonResult呢?

 

2.我很明白web api設計的初衷,什麼語義啊,什麼資源啊,但就這麼幾個方法也嚴重不夠用啊,比如 User中,需求就有註冊,登入,修改密碼,修改資料,驗證使用者名稱唯一性等,一個GET PUT POST DELETE怎麼夠用,當然我知道還有其他的type,但那些英文單詞太生澀,難道告訴終端的朋友這個用 LOCK,那個用 SEARCH? 所以最後我又改了路由,類似

config.Routes.MapHttpRoute(                name: "ActionApi",                routeTemplate: "api/{controller}/{action}/{id}",                defaults: new { id = RouteParameter.Optional }            );

然後在 action 上打上 HttpPost HttpPut。等等,都這個樣了,為什麼不用MVC,MVC中action不一樣可以打上 get post

 

 

3.以為這就結束了,不,做終端的同事說,你那個帶PUT的方法,根本用不了啊。也許,像AppCan這種中介軟體,也許就只支援GET,POST,在我最後把HttpPut改為 HttpPost後,一切都好了

 

 

再來看所謂的Web Api,這還是Web Api嗎? 其實跟MVC裡用JsonResult 沒啥兩樣,不知道微軟為什麼出這麼個玩意兒??

 

難道沒有人吐槽 Asp.net Web Api 的嗎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.