.NET Web API 新手遇到的那些“坑”
以前一直做web项目,用的mvc。最近公司需要上线APP,准备用webAPI做接口,用习惯了MVC,API还是有好多细节的地方感觉很“坑”...
第一个坑,webAPI的默认路由规则不一样,通过命名来匹配调用方式,只匹配controller和参数,不匹配action...偶,NO!叫我这个使用了快两年MVC的小码农如何能承受如此重的打击!!!二话不说,咔咔咔,路由配置加上了action...心情瞬间舒畅了不少,再望望窗外的灰蒙蒙的天,我分明看见了蓝天与白云。
第二个坑,一个简单参数的POST方法愣是获取不到传入的值。整整一个上午啊,折腾来折腾去的,在损失了本来就不多的数十根头发与上万个头皮细胞后终于找到了答案:多参数POST提交,接口需要把参数们写进一个对象,再加上[FromBody],万事OK;一个简单参数的POST接口肯定不能做成一个对象,因为偶是一个非常有洁癖的码农,于是乎,开始了和百度的搜索大战....不搜不知道,一搜吓一跳,原来webAPI都出来好几年了!原来早在12年大神门就已经在博客园里讨论过了...12年我在干嘛呢,恩,想想~才大二大三啊我去,不是在勾搭小学妹就是在撸啊撸...好吧,为了表示我也为这个问题努力过,贴上别人的一些解决方法:建个类,参数扔里面,一个参数也这么干,这是其一。接口这么写[FromBody] string content,据说jquery 这么写$.post('/api/wocao' ,{'':'坑爹货'} )是没问题的,具体神马Android啊IOS啊,话说关我鸟事,到时候,拿jquery给他们看“我jquery都能实现,你们做不了肯定是你们的问题,自己想办法去...”想起来都比较开心。
再来说说第一个坑,像楼主我这么做肯定是不合适滴,上文才说了,哥是一个有节操的程序猿!!!好吧,路由改回去,action命名按规则来,这种[HttpGet][HttpPost]标签全部干掉,咱也写一把RESTful标准的API接口,做一次正规军,做个好码农,做个好男子...可是,尼玛一个controller里面有两个接口的参数就是一模一样肿么办?表说不可能,写着写着绝逼的会出现这问题,心中十万匹草泥马奔过...你知道逼着一个有节操的程序员去把很优美的参数名称改掉是一件多么惨绝人寰的事,至少我是含着泪改完的。都怪自己当时高考填志愿的时候相信了同桌阿花的建议,不过想着他现在正在甘肃的某个深山里面铺铁轨,我心也就平衡了些许。
好吧,下班了。其他“坑”,明天再来掰扯...