扯淡

随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式。这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥,只是鱼和熊掌不能兼得,各种语法糖带来开发的便利势必会牺牲程序运行的性能,这是无可避免的,通用和效率永远是需要程序员去取舍的话题。扯淡到这就完了,下来就聊聊今天的主角web api,web api 是mvc4.0之后出现的一种技术吧,他的创建和带来的便利我就不介绍了。这边文章主要聊聊,我对web api开发的一些理解。

话题一:[FromBody]特性修饰符

FromBody是一个修饰参数的特性,比如:public void Post([FromBody]string name),那么他的作用是什么呢,其实他的作用是查询post请求中参数为name的值。

要注意的是:[FromBody]只能修饰单个参数,如果是多个参数的话,就要封装成对象进行数据专递了,比如:public void Post([FromBody]string name,[FromBody]int id)是取不到值的,要把id和name封装成Userinfo对象,使用 public void Post([FromBody]Userinfo user)进行调用。

话题二:post传递多个不同对象的参数

已经post请求需要使用[FromBody]特性修饰符接收,但是FromBody只能接收单个参数,如果需要传递不同对象的输出就比较麻烦了,新建实体对象成本太大,也不能完全适应适应的类型,这个时候需要使用JObject来处理,代码如下:

jQuery.post("/Api/Userinfo/Add/", {mobile: "18049579804",pwd: "123456",smsCode: "12346",t: new Date().getTime()
}, function (data) {if (data) {document.writeln(data);}
});

public string Add([FromBody]JObject pdata)
{string mobile = Convert.ToString(pdata["smsCode"]);string pwd = Convert.ToString(pdata["pwd"]);string smsCode = Convert.ToString(pdata["smsCode"]);
}

话题三:请求方式(Get & Post)

关键字区分:Get请求或者Post请求,可以用自身的关键字来区分,比如:GetUser(int id)肯定为get请求,Getxxx(params param)等格式为Get请求,post同理。当然还有一种方式,是没有关键字修饰的方法,比如:FindUser这种情况下,这种请求下默认是Post请求的Get请求就会报405的错。

话题四:返回json格式的结果

这个会简单设置返回值为Net自带的Json格式即可,可以返回JObject或JArray都是可以用ajax接收json对象的。代码如下:

public JObject PostFindUser([FromBody]Userinfo user)
{JObject res = new JObject();res["name"] = string.Format("{0}是好人~", user.Name);return res;
}

话题五:路由设置

本身的路由不是很好,需要设置WebApiConfig.cs配置为:控制/动作/参数

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

题外话:webapi获取http header信息代码:Request.Headers.GetValues("xxx")

聊聊asp.net中Web Api的使用相关推荐

  1. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  2. NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

    咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...

  3. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  4. ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ...

  5. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...

  6. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

    在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...

  7. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...

  8. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  9. 如何测试ASP.NET Core Web API

    在本文中,我们将研究如何测试你的ASP .NET Core 2.0 Web API解决方案.我们将了解使用单元测试进行内部测试,使用全新的ASP .NET Core的集成测试框架来进行外部测试. 本文 ...

最新文章

  1. 【C++】38.类成员变量声明为 对象与指针的区别
  2. Bundle/Intent传递序列化参数暗藏杀机
  3. 】.NET使用NPOI组件将数据导出Excel
  4. python构建字典查大写英文字母ascii编码_python – 字典中ISO短代码的国家名称,如何处理非ascii字符...
  5. 认识Spring以及环境的配置
  6. [Lintcode]102. Linked List Cycle/[Leetcode]
  7. ORA-01502: 索引或这类索引的分区处于不可用状态 [已解决]
  8. SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)...
  9. Linux内核源码下载
  10. 在互联网上,没有人知道你是一条狗?
  11. 全国计算机一级2021选择题,2021年度全国计算机一级考试选择题试题与详细答案.doc...
  12. Oracle 11g详细安装介绍plsql下载和安装介绍
  13. 外贸企业邮箱域名怎么注册?企业邮箱申请域名流程?
  14. 雨落阅读量突破1000!
  15. Bug算法(Bug Algorithms)简介(Bug1 Bug2 Tangent Bug)
  16. 要成就事业,更要分享快乐 记上海润邦(集团)有限公司董事长兼总经理李东
  17. Linux-shell脚本基础
  18. 哥德尔递归汉译和原始递归——哥德尔原著英译拆解汉译之七
  19. 【吊打面试官】计算机基础知识
  20. 阿尔法围棋是人工智能吗,围棋智能机器人阿法狗

热门文章

  1. 与安装应用签名不同怎么解决_天堂巴比伦 安卓游戏安装失败怎么解决
  2. C语言 | 编程实现6
  3. 计算机一级单元格公式设置错误是什么原因,excel表格公式出错怎么解决,电子表格求和出错...
  4. oracle数据库恢复aul_RMAN备份与恢复 —— 完全恢复与不完全恢复
  5. 需要在函数中传递的变量
  6. rust实战入门到进阶(3)
  7. 操作系统设计与实现第3版笔记与minix3心得(4)-操作系统发展历史(2)
  8. PowerBI随笔(3)-增加自定义列
  9. 【深度学习】超级赞!N个神经网络可视化利器
  10. 【NLP】ALL in BERT:一套操作冲进排行榜首页