asp.net webapi 使用小结
一星期前公司用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 使用小结的更多相关文章
- ASP.NET WebApi 增删改查
本篇是接着上一篇<ASP.NET WebApi 入门>来介绍的. 前言 习惯说 CRUD操作,它的意思是"创建. 读取. 更新和删除"四个基本的数据库操作.许多 HTT ...
- 彻底解决Asp.netCore WebApi 3.1 跨域时的预检查204 options重复请求的问题
Asp.netCore WebApi 3.1 跨域的预检查options问题 1:我们直接使用core跨域的中间件 ,注入跨域服务, services.AddCors(options => { ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
- ASP.NET WebApi 文档Swagger深度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws 写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...
- ASP.NET WebApi 文档Swagger中度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws 写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...
- 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 ...
- ASP.NET WEBAPI 的身份验证和授权
定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...
随机推荐
- 动态规划(DP),递推,最大子段和,POJ(2479,2593)
题目链接:http://poj.org/problem?id=2479 解题报告: 1.再求left[i]的时候,先没有考虑a[i]的正负,先把a[i]放到left[i]中,然后left=max(le ...
- react中 props,state与render函数的关系
我们很明显的能够感受到,react是一门数据驱动的框架,当数据发生变化,页面就会自动发生变化,他背后的原理是怎么样子的呢 比如todolist例子里面,inputValue变了,框里面的内容就会自动变 ...
- PHP语言开发微信公众平台(订阅号)之注册(1)
1.百度搜索"微信公众平台" 2.选择微信公众平台官网并单击打开 3.进入官网页面,单击 "立即注册" 进入注册页面 4.进入注册页面,单击订阅号 5.进入订阅 ...
- 【洛谷P1039】侦探推理
侦探推理 题目链接 这是一道恶心至极的模拟题 我们可以枚举罪犯是谁,今天是星期几,从而判断每个人说的话是真是假 若每个人说的话的真假一致,且说谎话的人数<=k且说真话的人数<=m-k,就是 ...
- js获取站点根目录
function getRootPath(){ var strFullPath=window.document.location.href; var strPath=win ...
- SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台
转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/ 本文出自方志朋的博客 这篇文章主要介绍 ...
- ATK-DataPortal 设计框架(一)
无论是简单的还是复杂的框架,总需要一个开始的原点,ATK-DataPortal中包含了所有基础类的定义. 一.业务框架基础类 1.BusinessBase:所有业务类的根类,要使用ATK库的类,必需继 ...
- 记录一次LOB损坏导致的EXPDP导出ORA-01555报错
同事导出数据,结果遇到如下报错: expdp user1/XXXXXXXX directory=szdata1 dumpfile=szhzinfo_20180319.dmp logfile=szhzi ...
- redis sentinel搭建以及在jedis中使用
一.redis主从搭建 1.搭建redis master 1>redis安装 mkdir -p /usr/local/webserver/redis //安装目录 cd /usr/local/w ...
- ABAP术语-Error Message
Error Message 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/30/1058283.html Information from ...