WebApi笔记
WebApi有一段时间没用了,这几天用webapi做了一个接口供第三方调用,又重新折腾了下,做个笔记记录下心得,防止遗忘。
1、webapi使用的RESTful风格的传参方式,其实就是充分利用HTTP请求的格式来完成参数的传递。HTTP请求除了常用的get、post请求方式外,还有put、patch、delete请求方式。
2、后台对应的限制传参特性标签有[HttpGet]、[HttpPost]、[HttpPut]、[HttpPatch]、[HttpDelete]。
3、在给方法起名字的时候,方法名称前面最好加上对应的请求方式,比如Get***、Post***、Put***、Delete***。这样即使不使用特性标签,请求也能根据webapi的路由机制自动匹配对应的方法。
4、HttpPatch在webapi中是部分更新的意思,但要注意,由于MVC的模型绑定功能,在进行部分传参的时候,会把未进行需要传参的参数重装为null。例如:只修改Name,则使用HttpPatch的时候,会把Email的值改成null。所以,在使用HttpPatch的时候,这一点需要特别注意。
5、如果不想使用[FromBody]这样的形式传参,可以使用dynamic定义参数。在这样进行操作时候,前端传递的参数必须是json的形式,而且要添加contentType:'application/json'参数。具体使用方式请参考put传参的代码。
View:
- <html>
- <head>
- <meta name="viewport" content="width=device-width" />
- <title>Index</title>
- <script src="~/Scripts/jquery-1.10.2.min.js"></script>
- <script>
- $(function () {
- $('#btn_get').click(function () {
- $.ajax({
- url: '/api/WebApiDemo',
- type: 'get',
- data: { Id: , Name: '卡卡西', Email: 'kkx@163.com' },
- success: function (data) {
- alert('get请求');
- }
- });
- });
- $('#btn_post').click(function () {
- $.ajax({
- url: '/api/WebApiDemo',
- type: 'post',
- data: { Id: , Name: '卡卡西', Email: 'kkx@163.com' },
- success: function (data) {
- alert('post请求');
- }
- });
- });
- $('#btn_put').click(function () {
- $.ajax({
- url: '/api/WebApiDemo',
- type: 'put',
- contentType: 'application/json',
- data: JSON.stringify({ Id: , Name: '卡卡西', Email: 'kkx@163.com' }),
- success: function (data) {
- alert('put请求');
- }
- });
- });
- $('#btn_delete').click(function () {
- $.ajax({
- url: '/api/WebApiDemo',
- type: 'delete',
- data: { Id: , Name: '卡卡西', Email: 'kkx@163.com' },
- success: function (data) {
- alert('delete请求');
- }
- });
- })
- });
- </script>
- </head>
- <body>
- <div>
- <input type="button" id="btn_get" value="Get查询请求" />
- <input type="button" id="btn_post" value="Post提交数据" />
- <input type="button" id="btn_put" value="Put修改数据" />
- <input type="button" id="btn_delete" value="Delete删除数据" />
- </div>
- </body>
- </html>
Controller:
- [HttpGet]
- public string GetDemo([FromUri] Person person)
- {
- return "ok";
- }
- [HttpPost]
- public string PostDemo([FromBody] Person person)
- {
- return "ok";
- }
- [HttpPut]
- public bool PutDemo(dynamic obj)
- {
- return true;
- }
- [HttpDelete]
- public bool DeleteDemo([FromBody] Person person)
- {
- return true;
- }
运行截图:
Get传参:
Post传参:
Put传参:
Delete传参:
WebApi笔记的更多相关文章
- WebAPI 笔记
一.基本配置 1. 全局配置 Global.asax public class WebApiApplication : System.Web.HttpApplication { protected v ...
- Visual Studio 2015 Owin+MVC+WebAPI+ODataV4+EntityFrawork+Identity+Oauth2.0+AngularJS 1.x 学习笔记
2016年,.net 会有很多大更新 ASP.NET 5 在此之前我都是用着古老的.net做开发的 (WebForm + IIS) 为了接下来应对 .net 的新功能,我特地去学习了一下基本的 MVC ...
- Asp.Net Core WebApi学习笔记(四)-- Middleware
Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...
- 笔记-ASP.NET WebApi
本文是针对ASP.NET WepApi 2 的笔记. Web API 可返回的结果: 1.void 2.HttpResponseMessage 3.IHttpActionResult 4.其他类型 返 ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...
- ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案
先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...
- 【读书笔记】WebApi 和 SPA(单页应用)--knockout的使用
Web API从MVC4开始出现,可以服务于Asp.Net下的任何web应用,本文将介绍Web api在单页应用中的使用.什么是单页应用?Single-Page Application最常用的定义:一 ...
随机推荐
- 项目随笔@Service("testService")-------第二篇
在springmvc中使用注解已经司空见惯了,今天见到了@Service("xxx")这种形式,让我大吃一惊.原来在service后面可以加参数,作为该service的名字,在sp ...
- lambda表达式、匿名函数
lambda表达式是函数式编程中的匿名函数语法规范. In computer programming, an anonymous function (function literal, lambda ...
- BZOJ 1266: [AHOI2006]上学路线route Floyd_最小割
十分简单的一道题. 图这么小,跑一边 Floyd 就得到第一问最短路径的答案. 考虑第二问怎么求:我们可以先将最短路径组成的图从原图中抽离出来,构成新图 $G$. 我们发现,只要 $G$ 的起点与终点 ...
- 嵌入式 ThriftServer in Spark
我们知道在Spark中可以通过start-thriftServer.sh 来启动ThriftServer,之后并可以通过beeline或者JDBC来连接并执行Spark SQL.在一般的Spark应用 ...
- C++基础 (2) 第二天 C++相对C的改进 命名空间 引用
1 昨日回顾 2内联函数 3 默认参数和占位参数 4函数重载 函数重载 就是可以定义多个相同名字的函数 6 类和对象的基本语法 7 类的封装和访问控制 还有一个结论: 封装有两层含义: 把属性和方法进 ...
- 为什么在JavaScript中0.1+0.2不等于0.3?
0.1+0.2不等于0.3?是不是有点颠覆你的认知,但是,在js中,是真实存在的! console.log(0.1+0.2); // 0.30000000000000004 其实这都是因为浮点数运算的 ...
- 【转】H5 input search 提交事件
欲实现一个文字搜索的功能,要求输入时,键盘回车按钮提示显示为“搜索”.效果如下: 开始~ input type=text并不能达到这种效果,google了一下,HTML5 增加的type=search ...
- 洛谷 P1137 旅行计划 (拓扑排序+dp)
在DAG中,拓扑排序可以确定dp的顺序 把图的信息转化到一个拓扑序上 注意转移的时候要用边转移 这道题的dp是用刷表法 #include<bits/stdc++.h> #define RE ...
- Profile 动态切换环境
一.多 Profile 文件我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用 application.properties 的 ...
- BA--近零能耗示范楼(西门子-中国建筑科学研究院院内)
中国建筑科学研究院院内的一栋办公楼使用了西门子的全套楼控.节能.消防.远景开关面板技术,每年的能耗为25kwh,远低于国家绿色能源标准.