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最常用的定义:一 ...
随机推荐
- Js中的4个事件
除了加载文档的事件onload和鼠标相关的一些事件如onclick,onmouseover等.js还有一些相对不常用的事件,这些事件也有各自的应用场景,本文就介绍 onkeydown,oncontex ...
- Integer Intervals POJ - 1716_查分约束_
Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; co ...
- 【Computer Vision】 复现分割网络(1)——SegNet
目录 Tags: ComputerVision 编译 数据处理 训练结果 Reference Tags: ComputerVision 编译 src/caffe/layers/contrastive_ ...
- SurgingFunction
- js实现本地的图片压缩上传预览
js在设计时考虑到安全的原因是不允许读写本地文件的,随着html5的出现提供了fileReader AP从而可以I实现本地图片的读取预览功能, 另外在移动端有的限制图片大小的需求,主要是考虑图片过大会 ...
- redis_1 安装和简单使用
前言: mysql 数据库:数据以“文件形式存储在硬盘”里面.硬盘的存取速度很慢.数据库是一个系统中最占用资源的部分.当sql语句比较复杂(关联的表比较多的时候),每执行一次就会消耗大量的资源.倘若一 ...
- springMVC入门截图
mvc在bs系统下的应用 ---------------------------------------------------- 在web.xml中配置前端控制器(系统提供的一个servlet类 ...
- ongl表达式中得到对象,调用对象方法(OA项目权限显示模块)
在用户是否拥有某项权限的问题 是这样解决的: 用户登录之后 登录信息是保存在session域中的 通过el表达式可得到登录的对象信息 那么怎样判断用户是否拥有某项权限呢 ?如果没有上图中的判断 ...
- Unhandled 'error' event
events.js: throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js ...
- ASP.NET CORE--WIN10上无法单步调试解决方法
参考这篇文章 http://www.cnblogs.com/artech/p/debug-in-vs-code.html In order to be able to debug cross-plat ...