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笔记的更多相关文章

  1. WebAPI 笔记

    一.基本配置 1. 全局配置 Global.asax public class WebApiApplication : System.Web.HttpApplication { protected v ...

  2. Visual Studio 2015 Owin+MVC+WebAPI+ODataV4+EntityFrawork+Identity+Oauth2.0+AngularJS 1.x 学习笔记

    2016年,.net 会有很多大更新 ASP.NET 5 在此之前我都是用着古老的.net做开发的 (WebForm + IIS) 为了接下来应对 .net 的新功能,我特地去学习了一下基本的 MVC ...

  3. Asp.Net Core WebApi学习笔记(四)-- Middleware

    Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...

  4. 笔记-ASP.NET WebApi

    本文是针对ASP.NET WepApi 2 的笔记. Web API 可返回的结果: 1.void 2.HttpResponseMessage 3.IHttpActionResult 4.其他类型 返 ...

  5. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  6. 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换

    路由其实也可以很简单-------Asp.net WebAPI学习笔记(一)   MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...

  7. ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

  8. 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案

    先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...

  9. 【读书笔记】WebApi 和 SPA(单页应用)--knockout的使用

    Web API从MVC4开始出现,可以服务于Asp.Net下的任何web应用,本文将介绍Web api在单页应用中的使用.什么是单页应用?Single-Page Application最常用的定义:一 ...

随机推荐

  1. JS 垃圾回收机制

    [转自]:https://segmentfault.com/a/1190000018605776 垃圾回收 JavaScript 中的内存管理是自动执行的,而且是不可见的.我们创建基本类型.对象.函数 ...

  2. 2018秋招blibli算法工程师

    我给出代码如下:和之前做数塔(dp的入门题目)的思路一致 dp[i][j]为走到坐标(i,j)的最小减速(只有向右走和向上走两种情况) #include<stdio.h> #include ...

  3. PowerDesigner工具

    PowerDesigner是一款数据库设计与建模工具,开发人员可以在上面设计表结构,而不用一开始就创建数据库中的表,因为设计阶段数据库表结构会经常变动.设计完后可以导出创建所有表的SQL脚本,直接执行 ...

  4. SQL Server UPDATE语句的用法详解

    SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...

  5. python面向对象的三大特性之一多态

    多态 多态的特性是调用不同的子类将会产生不同的行为,而无需明确知道这个子类实际上是什么 说白了就是,不同的对象调用相同的方法,产生不同的行为 例如:s1是字符串类型,w1是列表,两个完全不同的对象,他 ...

  6. FreeBSD的VIM基本配置

    实现的基本功能 中文解决乱码问题 鼠标右键原样粘贴 最后一次编辑文件后,鼠标位置的记忆 if v:lang =~ "utf8$" || v:lang =~ "UTF-8$ ...

  7. LaTeX soul包

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50774955 详细的soul包的官方P ...

  8. win7下virtualbox遇到的问题

    问题1:无法创建unbuntu 64bit 虚拟机           安装完virtualbox后,新建虚拟机.类型选择为Linux时,版本下拉选项只有ubuntu 32bit,无ubuntu 64 ...

  9. hdu 1166 敌兵布阵——(区间和)树状数组/线段树

    pid=1166">here:http://acm.hdu.edu.cn/showproblem.php?pid=1166 Input 第一行一个整数T.表示有T组数据. 每组数据第一 ...

  10. 刚接触Joomla,写一下瞎折腾的初感受~

    我这几天一直在苦苦寻找一款能够长期投靠的CMS产品,要求的是 1)必须支持命名空间 2)必须OOP + MVC分层 3)丰富分文档和使用群体,至少是出名的.免得哪一天他们解散了 4)-- 一開始我把目 ...