注释玩转webapi
using System;
using System.Collections.Generic;
using System.Net.Http.Formatting;
using System.Web.Http; namespace MvcTest
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//定义路由以支持action
//实际开发建议使用此方式
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api3/{controller}/{action}/{key}",
defaults: new { key = RouteParameter.Optional }
); //自定义路由,指定默认参数为key
//http://localhost:21931/api2/myapi
config.Routes.MapHttpRoute(
name: "MyApi",
routeTemplate: "api2/{controller}/{key}",
defaults: new { key = RouteParameter.Optional }
); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//请求时上送format指定响应的格式
//demo:http://localhost:21931/api/myapi?format=json
//如果不指定会以浏览器上送的accept来决定,因此在chrome下会返回xml,在ie下会返回json
config.Formatters.JsonFormatter.AddQueryStringMapping("format", "json", "application/json");
config.Formatters.XmlFormatter.AddQueryStringMapping("format", "xml", "application/xml");
}
}
}
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http; namespace MvcTest.Controllers
{
public class MyApiController : ApiController
{
//默认参数为id,务必与路由里的一致,否则会出现404的错误
// GET api/myapi
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
} //返回一个对象
//api/myapi/111?format=json返回为json
//api/myapi/111?format=xml返回为xml
//实现原理参见WebApiConfig配置
public User Get(int id)
{
return new User { Name = "AA", Age = id };
} //请求方式/api/myapi/?name=wjf&count=111
public List<User> Get(string name, int count)
{
var list = new List<User>();
for (int i = ; i < count; i++)
{
list.Add(new User { Name = name, Age = count * });
}
return list;
} //感受一下webapi的重载
public String Post()
{
return "aa";
} //感受一下webapi的重载
public string Post(string id)
{
return "post接收到数据:" + id;
} //感受一下webapi的重载
//此方法不能与post()共存,这样会导致不知道怎么映射要解决此问题可以通过自定义方法实现
//public string Post(User u)
//{
// if (u == null)
// return "无数据";
// return "post接收到数据:" + u.ToString();
//} //WEBAPI中的Request是HttpRequestMessage类型,
//当参数的名称与路由的名称不一致时,要接收只能通过HttpContext.Current.Request[key]
// POST api/myapi
//public string Post([FromBody]string value)
//{
// var a = HttpContext.Current.Request["value"];
// if (!string.IsNullOrWhiteSpace(a))
// return a;
// return "post" + value;
//} //参数默认是FormUri
// PUT api/myapi/5
public string Put([FromBody]string id)
{
return "put" + id;
} // DELETE api/myapi/5
public string Delete(string id)
{
return "Delete" + id;
} //方法不够时可以自己定义方法,一般不推荐此方法
[AcceptVerbs("MY", "HEAD")]
public string My([FromBody]string id)
{
return "My" + id;
} //自定义方法
//注意参数是key哦
//查看路由发指定默认参数是key
[AcceptVerbs("MYROUTE", "HEAD")]
public string MyRoute([FromBody]string key)
{
return "MYROUTE" + key;
} //调用此方法通过http://localhost:21931/api3/myapi/GetAll,需要先配置好路由
//此方法与post()共存时会有问题,路由不知道如何映射
//public string MyAll()
//{
// return "aaaaaaaaaaaaaaaaaaaaa";
//} } public class User
{
public String Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return string.Format("name:{0},age:{1}", Name, Age);
}
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#btn").click(function () {
// //get请求
// $.ajax({
// type: 'GET',
// url: 'api/myapi/123',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert(11);
// }
// }); //调用无参数的post请求
// $.ajax({
// type: 'POST',
// url: 'api/myapi',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); // $.ajax({
// type: 'POST',
// url: 'api/myapi',
// data: { Name: 'wjf', Age: 123 },
// dataType: 'json',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert(11);
// }
// }); // $.ajax({
// type: 'PUT',
// url: 'api/myapi',
// data: { '': '11111' },
// dataType: 'json',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); // $.ajax({
// type: 'Delete',
// url: 'api/myapi/11111111',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); //调用自己定义的方法
// $.ajax({
// type: 'MY',
// url: 'api/myapi/我是URL参数',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); //调用自己定义的方法
// $.ajax({
// type: 'MY',
// url: 'api/myapi',
// data: { '': '我是json传的值' },//如果要传多个值,是不支持这种写法的(formbody只支持一个修饰),需要定义一个对象对接收
// dataType: 'json',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); // $.ajax({
// type: 'MYROUTE',
// url: 'api2/myapi',
// data: { '': '我是json传的值' }, //如果要传多个值,是不支持这种写法的(formbody只支持一个修饰),需要定义一个对象对接收
// dataType: 'json',
// success: function (data) {
// jalert(data);
// },
// error: function (xmlHttpRequest, textStatus, errorThrown) {
// jalert("调用失败");
// }
// }); });
});
function jalert(msg) {
$("#msg").html(msg);
}
</script>
</head>
<body>
<input type="button" value="测试" id="btn" />
<span id="msg"></span>
</body>
</html>
注释玩转webapi的更多相关文章
- .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...
- WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
.NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩 ...
- JSON数据源提供多值参数的实现
一.应用场景 (1)报表的数据内容需要根据某个参数进行过滤. (2)该参数是一个多值参数,即从一个下拉列表中选择一个或多个项目. (3)报表需要自动运行,因此参数必须有默认值. (4)参数默认值无法在 ...
- 项目梳理4——WebApi项目,使用注释填充Description字段
web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设 ...
- swagger webapi控制器注释不显示
swagger是webapi文档描述及调试工具,要在asp.net mvc中使用swagger,需要安装Swashbuckle.Core这个包,安装好后会在app_start中生成SwaggerCon ...
- 如何新建WebAPI,生成注释,TestAPI的项目
一.新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二.注释 1. 在生成中,勾选x ...
- Word 查找替换高级玩法系列之 -- 把论文中的缩写词快速变成目录下边的注释表
1. 前言 问题:Word写论文如何把文中的缩写快速转换成注释表? 原来样子: 想要的样子: 2. 步骤 使用查找替换高级用法,替换缩写顺序 选中所有文字 打开查找替换对话框,输入以下表达式: 替换后 ...
- ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】
⒈新建ASP.NET Core WebAPi项目 ⒉添加 NuGet 包 Install-Package Swashbuckle.AspNetCore ⒊Startup中配置 using System ...
- Dynamics CRM 365中结合注释和WebApi实现图片上传
首先需要在实体上使用注释,然后在窗体上引用WebResource. WebResource的代码: <!DOCTYPE html> <html> <head> &l ...
随机推荐
- Got error creating database manager: java.io.IOException解决方法
14/03/26 23:03:55 ERROR tool.BaseSqoopTool: Got error creating database manager: java.io.IOException ...
- HW2.8
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序
Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序).没错,Robocopy的功能是拷贝文件,你也许会觉得无聊并且要翻阅下一篇文章 ...
- ScheduledExecutorFactoryBean忽略异常继续执行
ScheduledExecutorFactoryBean忽略异常继续执行 程序中有一个定时任务,每10分钟把满足条件的任务从一个表迁移到另一张表,程序启动的时候数据库异常了一段时间,之后数据库恢复了. ...
- requirejs 打包参数
https://github.com/requirejs/r.js/blob/master/build/example.build.js
- Java时间转换类实现
Java时间类型非常的差,首先版本问题,本人使用java在Android平台开发.很多Data类的方法已经不提倡使用,一个时间,居然要使用Calendar.DateFormat等类共同编码,非常麻烦. ...
- ubuntu安装软件
sudo apt-get install gnome-tweak-tool sudo apt-get install gksu 软件数据库损坏 无法安装或删除任何软件.请先使用新立得软件包管理器或在终 ...
- PERCONA-TOOLKIT : pt-ioprofile分析IO情况
针对IO密集型应用做系统调优的时候,我们通常都需要知道系统cpu 内存 io 网络等系统性能 和 使用率,结合应用本身的访问量,以及 mysql的性能指标来综合分析.比如说:我们将系统压力情况分为 ...
- [转] Android进阶——安卓接入微信,获取OpenID
PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息 http://blog.csdn.net/hao ...
- PPTP、L2TP、IPSec和SSLVPN的区别
VPN (虚拟专用网)发展至今已经不在是一个单纯的经过加密的访问隧道了,它已经融合了访问控制.传输管理.加密.路由选择.可用性管理等多种功能,并在全球的信息安全体系中发挥着重要的作用.也在网络上,有关 ...