一星期前公司用webapi处理一些事情,自己总结一下用法。

1.创建一个空的webapi会默认有一下几个方法。

    public class ValueController : ApiController
{
// GET api/value
public IEnumerable<string> Get()
{ return new string[] { "value1", "value2" };
} // GET api/value/5
public string Get(int id)
{ return "value";
} // POST api/value
public void Post([FromBody]string value)
{ } // PUT api/value/5
public void Put(int id, [FromBody]string value)
{ } // DELETE api/value/5
public void Delete(int id)
{ }
}

第一个IEnumerable<string> Get()

      $.ajax({
url: "/api/value",
type: "get",
success: function (data) {
alert(data);
}
});

第二个 string Get(int id)

    $.ajax({
url: "/api/value/1",
type: "get",
success: function (data) {
alert(data);
}
});

第三个 void Post([FromBody]string value) ,调用的时候比较特殊,我在data前面的键值给空的时候才能把值传输到后台去。

    $.ajax({
url: "/api/value",
type: "post",
data: { '': "test" },
success: function (data) {
//alert(data);
}
});

或者改造后台接收方法。用实体来接收值,可以接收到。

        public class PostModel
{
public string value { get; set; }
}
public string Post([FromBody]PostModel value)
{
return "ok";
}
        $.ajax({
url: "/api/value",
type: "post",
data: { 'value': "test" },
success: function (data) {
//alert(data);
}
});

第四个 string Put(int id, [FromBody]PostModel value) 调用的时候,id必须包含在路径中,才能获取到。放在接收的实体中也是没用的。

    $.ajax({
url: "/api/value/1",
type: "Put",
data: { 'value': "test" },
success: function (data) {
//alert(data);
}
});

第五个 string Delete(int id) 调用跟第一个唯一的区别需要标明type:“Delete”

这是默认的几种使用方法,但是自己使用的时候感觉约束蛮多。然后我把它们全删了。

用法上不规范,但是用起来感觉比较舒服,感觉代码还是怎么写起来舒服怎么来吧,自己在api路由这里加了一项{action}这样用起来看着跟mvc区别不大。

    public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}

代码就可以这样写了。

    public class ValueController : ApiController
{ public List<string> GetList()
{ return new List<String> { "value1", "value2" };
} public List<string> GetTestList()
{ return new List<String> { "value1", "value2" };
} }
$.ajax({
url: "/api/value/GetTestList",
type:"post",
success: function (data) { }
});

对于webapi传参数,默认的都是从路径里提取的也就是get方式的传参。

     public List<string> GetList(string id,string name)
{ return new List<String> { "value1", "value2" };
}
    $.ajax({
url: "/api/value/GetList",
type: "get",
            data: { "id": "1", "name": "三" },
success: function (data) { }
});

    $.ajax({
url: "/api/value/GetList?id=1&name=三",
type: "get",
success: function (data) { }
});
 

如果需要传的字符串参数很多,get方式会报错,可以用post方式,这里需要注意的是不能用get开头,要么它只认get提交

    public class PostModel
{
public string value { get; set; }
public string id{ get; set; }
} public List<string> List([FromBody]PostModel value)
{ return new List<String> { "value1", "value2" };
}
    $.ajax({
url: "/api/value/List",
type: "post",
data: { "id": "1", "value": "01234567890123456789012345678901234567890123456789" },
success: function (data) { }
});

asp.net webapi 使用小结的更多相关文章

  1. ASP.NET WebApi 增删改查

    本篇是接着上一篇<ASP.NET WebApi 入门>来介绍的. 前言 习惯说 CRUD操作,它的意思是"创建. 读取. 更新和删除"四个基本的数据库操作.许多 HTT ...

  2. 彻底解决Asp.netCore WebApi 3.1 跨域时的预检查204 options重复请求的问题

    Asp.netCore WebApi 3.1 跨域的预检查options问题 1:我们直接使用core跨域的中间件 ,注入跨域服务, services.AddCors(options => { ...

  3. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  4. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  5. Asp.Net WebApi核心对象解析(上篇)

    生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...

  6. ASP.NET WebApi 文档Swagger深度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws   写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...

  7. ASP.NET WebApi 文档Swagger中度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws   写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...

  8. Creating a Clean, Minimal-Footprint ASP.NET WebAPI Project with VS 2012 and ASP.NET MVC 4

    Creating a Clean, Minimal-Footprint ASP.NET WebAPI Project with VS 2012 and ASP.NET MVC 4 Building O ...

  9. ASP.NET WEBAPI 的身份验证和授权

    定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...

随机推荐

  1. javascript运算符——条件、逗号、赋值、()和void运算符 (转载)

    原文出自 作者:小火柴的蓝色理想   javascript中运算符总共有46个,除了前面已经介绍过的算术运算符.关系运算符.位运算符.逻辑运算符之外,还有很多运算符.本文将介绍条件运算符.逗号运算符. ...

  2. Python—面向对象02

    1.抽象类与归一化 ​ 接口,即提供给使用者来调用自己功能的方式.方法.入口 为什么要使用接口? 接口提取了一类共同的函数,可以把接口看做一个函数的集合 然后让子类去实现接口中的函数 这么做的意义在于 ...

  3. linux网络相关配制及命令

    1.虚拟机配制 查看ip: ip addr 配制网卡(读者可以忽略): 编辑虚拟网络编辑器,修改子网IP 查看ip,输入ip addr 开启网络:ifup eth0  关闭网络:ifdown eth0 ...

  4. 并发编程之多线程基础-join方法及优先级(五)

    join()方法作用 当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1 优先级 现代操作系统基本采用时分的形式调度运行的线程,线程分配得到的时间片的多少决定了线程使用处理 ...

  5. Swift_字典详解

    Swift_字典详解 点击查看源码 初始化 fileprivate func testInit() { //空字典 var dic = [String:String]() print(dic) dic ...

  6. c c++面试c工程开发之宏定义和条件编译

    多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...

  7. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵

    链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 1.题目描述 景驰公司自成立伊始,公司便将“推动智能交通的发展,让人类的出行更安全,更高效,更经 ...

  8. 洛谷P2439 [SDOI2005]阶梯教室设备利用(带权区间覆盖)

    题目背景 我们现有许多演讲要在阶梯教室中举行.每一个演讲都可以用唯一的起始和终止时间来确定,如果两个演讲时间有部分或全部重复,那么它们是无法同时在阶级教室中举行的.现在我们想要尽最大可能的利用这个教室 ...

  9. 【解题报告】小白逛公园 vijos

    题目传送门 这道题是一道线段树的一个求一个连续最大字段和是一个区间线段树一个很妙妙的操作,这里后面我们后面就会提到,因为今天博主没有时间了所以先粘一篇代码供大家参考,其实代码理解还是非常的简单的. 代 ...

  10. kali2.0 设置输入法 找了好久,亲测有效

    kali2.0更新源启用中文输入法 查看版本信(Version): uname -r uname -r 工具(Tools): fcitx fcitx fcitx-table-wbpy 更新源:(Sou ...