.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里面有两个接口的参数就是一模一样肿么办?表说不可能,写着写着绝逼的会出现这问题,心中十万匹草泥马奔过...你知道逼着一个有节操的程序员去把很优美的参数名称改掉是一件多么惨绝人寰的事,至少我是含着泪改完的。都怪自己当时高考填志愿的时候相信了同桌阿花的建议,不过想着他现在正在甘肃的某个深山里面铺铁轨,我心也就平衡了些许。

好吧,下班了。其他“坑”,明天再来掰扯...

时间: 2024-10-13 13:24:42

.NET Web API 新手遇到的那些“坑”的相关文章

Https web Api 拉取数据踩坑记录

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;//提供安全证书 using (var http = new HttpClient()) { 在遇到HTTPS 接口时,如果POSTMAN可以随意访问,但是程序调试会遇到服务器拒绝的情况时,可以考虑是否为以上问题 原文地址:https

Web API返回JSON数据

对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Content": true, "StatusCode": 200, "RequestMessage": "sample string 2" } 这是定义的Response类 public class Response<T> //where

在Web API中使用Swagger-UI开源组件(一个深坑的解决)

介绍: Swagger-Ui是一个非常棒的Web API说明帮助页,具体详情可自行Google和百度. 官网:http://swagger.io/    GitHub地址:https://github.com/swagger-api/swagger-ui 使用: Swagger-Ui是一个用纯前端语言开发的项目,所有强大的功能全靠JS实现.为了能在.Net的Web API项目中使用,我们借用domaindrivendev开发的Swashbuckle进行配置.配置方法如下: 1.在Nuget中安装

(一)Asp.net web api中的坑-【找不到与请求 URI匹配的 HTTP 资源】

在.net下,创建一个HTTP服务,有很多方案,比较老ashx,一般处理程序(HttpHandler), Web Service SOAP协议的,数据格式是XML,HTTP协议         WCF 基于SOAP的,数据格式是XML,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ. Web API(文章主讲) 简单的构建HTTP服务,.net平台上Web API 是一个开源的.理想的.构建REST-ful 服务的技术,支持MVC的特征,像路由.控制器

Web api配置填坑攻略

最近开始使用web api,开发调试过程还算顺利,现在项目已经发布,网站已经部署,结果浏览过程出现问题(不出问题好像不正常吧……),做个note开始填坑. 1.1号坑 咋一开始就爆出另一个程序正在使用此文件?没有文件占用的,后想来是网站端口手动修改过,所以应该是端口冲突了,所以果断删除网站重新添加一个新的网站,端口直接指定为50000 如图所示,一定先把80默认端口干掉 2.2号坑 权限不足: 如果单击浏览网站后出现提示: 当前标识(IIS APPPOOL\ASP.NET v4.0)没有对“C:

Web API系列(三) 异常处理

在上一篇教程中我为大家介绍了Web API中Filter的开发使用,其中讲到ExceptionFilter时留了一个坑:ExceptionFilter只能截获并处理Action执行过程中发生的异常,在Action执行过程之外如果出现异常,ExceptionFilter是无能为力的. 这些异常包括: 1.  Controller构造方法中出现的异常 2.  MessageHandlers中出现的异常 3.  路由过程中出现的异常 4.  Body在序列化/反序列化过程中出现的异常 由此可以看出,E

Web API跨域访问

JS调用接口最需要注意的就是跨域问题 在.net平台下使js跨域变得非常简单 1.在nuget中引用 Microsoft ASP.NET Web API 2.2 Cross-Origin Support 包 2.再 Application_Start() 中加入 //跨域 GlobalConfiguration.Configuration.EnableCors(); 3.在 web.config 中设置权限 <system.webServer>  节点下  <httpProtocol&g

探秘如何操作 ASP.NET Web API (一)

作者:Parry 出处:http://www.cnblogs.com/parry/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 这是一篇新手入门的一篇非常不错的文章,强烈推荐!联系我加微信:jkxx123321 或者关注微信公众号:爱享黑马 概述 REST(Representational State Transfer表述性状态转移)而产生的REST API的讨论越来越多,微软在ASP.NET中也添加了We

不写画面的网页程序设计,Web API、Web Service、WCF Service

客户有一个系统,经常要连上我方,查询数据 以前的作法是给对方一个账号,让他可以连上我们的DB来查询. 所以,早期的同仁,真的给他们DB链接字符串 客户的Windows程序.网站就真的靠这么危险的方式,连上我们公司的DB. 但怎么想都觉得危险,而且...... 如果对方SQL指令乱下,把效能搞得更烂,岂不是惨兮兮? 如果对方不小心,配置文件被偷走,看到我方DB Connection String怎么办? 几年前的 Internet还没有那么大的带宽,所以还得种种限制,避免他们一次查询太多数据 我接