注释玩转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 ...
随机推荐
- oracle logminer全解析
今天写篇原创的,把在工作中遇到的logminer问题总结下 (1)简介: logminer 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其 ...
- 如何在编译Xcode-Plugin工程的时候增加Cocoapods依赖
关于如何在编译Xcode-Plugin工程的时候增加Cocoapods依赖 以及在Mac App上使用Cocoapods的时候遇到Library not found for -lPods时的解决办法 ...
- POJ1159 - Palindrome(区间DP)
题目大意 给定一个字符串S,问最少插入多少个字符可以使字符串S变为回文串 题解 用dp[i][j]表示把字符串s[i-j]变为回文串需要插入的最小字符数 如果s[i]==s[j]那么dp[i][j]= ...
- 使用WIF实现单点登录Part I——Windows Identity Foundation介绍及环境搭建 -摘自网络
上个月有一个星期的时间都在研究asp.net mvc统一身份验证及单点登录的实现.经过了一番的探索,最终决定使用微软的Windows Identity Foundation.但是这东西用的人貌似不多, ...
- novnc ignoring socket not reay
- 什么是JSON?如何使用?它比BSON更好吗?
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 长话短说:如果你想知道JSON——它是什么,如何使用它以及它和BSON哪个更好,那么你来对地方了.在本文中,我们 ...
- A Tour of Go Numeric Constants
Numeric constants are high-precision values. An untyped constant takes the type needed by its contex ...
- Video Surveillance - POJ 1474(判断是否存在内核)
题目大意:询问是否在家里装一个监视器就可以监控所有的角落. 分析:赤裸裸的判断多边形内核题目. 代码如下: #include<iostream> #include<string.h& ...
- bzoj3926: [Zjoi2015]诸神眷顾的幻想乡 对[广义后缀自动机]的一些理解
先说一下对后缀自动机的理解,主要是对构造过程的理解. 构造中,我们已经得到了前L个字符的后缀自动机,现在我们要得到L+1个字符的后缀自动机,什么需要改变呢? 首先,子串$[0,L+1)$对应的状态不存 ...
- 模拟等待事件row lock waits
是索引块分裂引起的锁等待,往往与enq: TX - index contention 伴随产生,enq:TX - index contention的解释. Waits for TX in mode 4 ...