一星期前公司用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. Python实现读取json文件到excel表

    一.需求 1.'score.json' 文件内容: { "1":["小花",99,100,98.5], "2":["小王" ...

  2. HDU 1160(两个值的LIS,需dfs输出路径)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS (Java/ ...

  3. Extjs treePanel 的treestore重复加载问题解决

    在Extjs 4.2.2 中构建一个treePanel 发现设置rootVisible后 ,treeStore中设置的autoLoad:false不启作用,在组件初始化的时候即加载数据源,造成数据重复 ...

  4. vue.js中的slot

    vue.js 中的 slot 一.slot 的作用 调用组件的时候,对于数据,我们会用props将数据从父组件传至子组件.但是,如果从父组件到子组件,单纯是页面局部渲染的改变,slot会更合适. 二. ...

  5. [HNOI2003]操作系统(优先队列,堆排序)

    题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则优先级越高. 如果一个进程到达的时 ...

  6. Linux 安装 python 指定版本--编译源码方式

    自动化脚本: #!/bin/bash sudo apt-get update sudo apt-get install -y gcc make build-essential libssl-dev z ...

  7. ABAP术语-ABAP Dictionary

    ABAP Dictionary 原文链接:http://www.cnblogs.com/qiangsheng/archive/2007/12/07/986204.html Central redund ...

  8. python核心编程2 第十四章 练习

    14-3.执行环境.创建运行其他Python脚本的脚本. if __name__ == '__main__': with open('test.py') as f: exec(f.read()) 14 ...

  9. TCP回话劫持原理和利用

    由于 TCP 协议并没有对 TCP 的传输包进行身份验证,所以在我们知道一个 TCP 连接中的 seq 和 ack 的信息后就可以很容易的伪造传输包,假装任意一方与另一方进行通信,我们将这一过程称为 ...

  10. JSP/Servlet开发——第五章 使用分层实现业务处理

    1.JNDI(Java Naming and Directory Interface)Java命名和目录接口: ●JNDI:是一个有关应用序设计的 API 为开发人员提供了查找和访问各种命名和目录服务 ...