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

  1. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...

  2. WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩 ...

  3. JSON数据源提供多值参数的实现

    一.应用场景 (1)报表的数据内容需要根据某个参数进行过滤. (2)该参数是一个多值参数,即从一个下拉列表中选择一个或多个项目. (3)报表需要自动运行,因此参数必须有默认值. (4)参数默认值无法在 ...

  4. 项目梳理4——WebApi项目,使用注释填充Description字段

    web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设 ...

  5. swagger webapi控制器注释不显示

    swagger是webapi文档描述及调试工具,要在asp.net mvc中使用swagger,需要安装Swashbuckle.Core这个包,安装好后会在app_start中生成SwaggerCon ...

  6. 如何新建WebAPI,生成注释,TestAPI的项目

    一.新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二.注释 1. 在生成中,勾选x ...

  7. Word 查找替换高级玩法系列之 -- 把论文中的缩写词快速变成目录下边的注释表

    1. 前言 问题:Word写论文如何把文中的缩写快速转换成注释表? 原来样子: 想要的样子: 2. 步骤 使用查找替换高级用法,替换缩写顺序 选中所有文字 打开查找替换对话框,输入以下表达式: 替换后 ...

  8. ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】

    ⒈新建ASP.NET Core WebAPi项目 ⒉添加 NuGet 包 Install-Package Swashbuckle.AspNetCore ⒊Startup中配置 using System ...

  9. Dynamics CRM 365中结合注释和WebApi实现图片上传

    首先需要在实体上使用注释,然后在窗体上引用WebResource. WebResource的代码: <!DOCTYPE html> <html> <head> &l ...

随机推荐

  1. Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题

    PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 ...

  2. NOIP2000 进制转换

    题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之 ...

  3. HW5.25

    public class Solution { public static void main(String[] args) { System.out.println(convertMillis(55 ...

  4. MyBatis Oracle批量更新

    <update id="updateProductSerialNo" parameterType="java.util.List"> <for ...

  5. 无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误分析以及解决方案

    我的配置文件中是这样写的,<compilation debug="true" targetFramework="4.0"> 发布在iis上出现了 “ ...

  6. TreeMap 排序

    一.TreeMap TreeMap 默认排序规则:按照key的字典顺序来排序(升序) 当然,也可以自定义排序规则:要实现Comparator接口. 用法简单,先看下下面的demo public cla ...

  7. 教你用笔记本破解无线路由器password

    近期非常多人问我怎么破解WiFipassword…看来大家都对免费的东西比較有兴趣.要么也可能是我太招摇了…囧… 好吧,我就写篇小小的教程,看完后,你应该可以破解大部分无线路由器password了,写 ...

  8. linux监控程序

    IP内部地址: 方法一:ifconfig |grep 'inet addr'|grep '192.168.1' | awk '{print $2}'| tr -d "addr:" ...

  9. Android开发之玩转FlexboxLayout布局

    在这之前,我曾认真的研究过鸿洋大神的Android 自定义ViewGroup 实战篇 -> 实现FlowLayout,按照大神的思路写出了一个流式布局,所有的东西都是难者不会会者不难,当自己能自 ...

  10. 闲话shuffle(洗牌)算法

    工作中经常会用到洗牌算法,看到这篇文章不错,原文摘自:http://www.atatech.org/article/detail/11821/928  作者:子仲   场景 洗牌算法的应用场景其实很多 ...