ASP.NET WebAPI 01-Demo
WebAPI作为构建RESTful的平台出来有段时间了,加上最近也在用,所以想把自己的心得记录下来。我就以一个简单的增删查改作为开篇。
准备
实体类(Figure)的定义。
public class Figure
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
再定义一静态类FigureManager用于存储要操作的Figure集合。
public static class FigureManager
{
static List<Figure> figures;
static FigureManager()
{
figures = new List<Figure>();
figures.Add(new Figure("Eddard", "Stack"));
figures.Add(new Figure("Robb", "Stack"));
figures.Add(new Figure("Sansa", "Stack"));
figures.Add(new Figure("Arya", "Stack"));
figures.Add(new Figure("Bran", "Stack"));
figures.Add(new Figure("Rickon", "Stack"));
figures.Add(new Figure("Jon", "Snow"));
}
public static List<Figure> Figures
{
get { return figures; }
}
}
CRUD
一般情况下我们操作的可能就是增删查改,所以demo中我就采用这几种基本的操作(因为修改与新增动作在前端得到的效果相似,所以就暂时没有写修改的例子)。
查询所有(GET)
public IEnumerable<Figure> GetAll()
这个方法我将FigureManager.Figures返回作为结果。
通过FirstName进行查询(GET)
在这里我采用了两种传参方式:QueryString与Route
QueryString
public Figure GetByQueryString(string firstName)
url: http://localhost:4296/api/Figure/GetByQueryString?firstName=Bran
Route:
[Route("api/Figure/GetByRoute/{firstName}")]
public Figure GetByRoute(string firstName)
url: http://localhost:4296/api/Figure/GetByRoute/Bran
新增(POST)
对于新增,由于Figure类的属性只有两个,所以demo中采用的四种方法(为了方便查看每个方法的都将FigureManager.Figures作为返回值):
- 直接获取FirstName,LastName
public IEnumerable<Figure> PostByUrl(string firstName, string lastName)
url: http://localhost:4296/api/Figure/PostByUrl?FirstName=Catelyn&LastName=Tully
- 通过QueryString进行Model绑定
public IEnumerable<Figure> PostByUrlModel(Figure figure)
url:http://localhost:4296/api/Figure/PostByUrlModel?FirstName=Catelyn&LastName=Tully
通过Route进行Model绑定
[Route("api/Figure/PostByRouteModel/{FirstName}/{LastName}")]
public IEnumerable<Figure> PostByRouteModel(Figure figure)
url: http://localhost:4296/api/Figure/PostByRouteModel/Catelyn/Tully
- 通过Body传递Model
public IEnumerable<Figure> PostByBody([FromBody] Figure figure)
url: http://localhost:4296/api/Figure/PostByBody
body:
{
"FirstName":"Catelyn",
"LastName":"Tully"
}
删除(DELETE)
因为Http提供了DELETE请求方式,所以就直接使用Delete请求进行删除操作:
public IEnumerable<Figure> Delete(string firstName)
url: http://localhost:4296/api/Figure/Delete?FirstName=Catelyn
源码
GitHub: https://github.com/BarlowDu/WebAPI
ASP.NET WebAPI 01-Demo的更多相关文章
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
- OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client
一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of quer ...
- ASP.NET WEBAPI 简单CURD综合测试(asp.net MVC,json.net,sql基础存储过程和视图,sqlhelper,json解析)
草图 真正的后端是不管前端是什么平台,用什么语言的,JSON格式的数据应该可以应对.用ASP.NET WEBAPI尝试做一个后端,实现最基本的CURD,业务逻辑和数据库操作都放在后端,前端只需要正 ...
- ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
帮助HELP 要实现如WCF中的Help帮助文档,Web API 2 中已经支持很方便的实现了这一特性 http://www.asp.net/web-api/overview/creating-we ...
- Asp.net WebApi + EF 单元测试架构 DbContext一站到底
其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Inc ...
- ASP.NET WebAPI 09 Controller的激活
在Controller之前我们先回顾一下HttpMessageHandler通道. 在这个图中我留一个HttpContollerDispatcher没有说明.因为这个类也是继承自HttpMessage ...
- Using ASP.Net WebAPI with Web Forms
Asp.Net WebAPI is a framework for building RESTful HTTP services which can be used across a wide ran ...
- ASP.NET WebApi 增删改查
本篇是接着上一篇<ASP.NET WebApi 入门>来介绍的. 前言 习惯说 CRUD操作,它的意思是"创建. 读取. 更新和删除"四个基本的数据库操作.许多 HTT ...
- 细说Asp.Net WebAPI消息处理管道
我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓S ...
随机推荐
- P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚
P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚 你有一段区间需要被覆盖(长度 <= 86,399) 现有 \(n \leq 10000\) 段小线段, 每段可 ...
- (转)Tomcat配置调优与安全总结
tomcat配置调优与安全总结 作为运维,避免不了与tomcat打交道,然而作者发现网络上关于tomcat配置和调优安全的文章非常散,通过参考各位大神的相关技术文档,根据作者对tomcat的运维经验, ...
- alertdialog 设置最大高度
设置最大高度,有很多方法,我个人比较喜欢的是下面这种方式 ,这里的view即添加到 view.addOnLayoutChangeListener(new View.OnLayoutChangeList ...
- Java入门系列(五)JVM内存模型
概述 根据<Java 虚拟机规范>中的说法,Java 虚拟机的内存结构可以分为公有和私有两部分. 公有指的是所有线程都共享的部分,指的是 Java 堆.方法区.常量池. 私有指的是每个线程 ...
- 洛谷P3953 [NOIP2017]逛公园
K<=50,感觉可以DP 先建反图求出从n到各个点的最短路,然后在正图上DP 设f[当前点][比最短路多走的距离]=方案数 转移显然是 $f[v][res]=\sum f[u][res+tmp] ...
- 基本控件文档-UISegment属性
CHENYILONG Blog 基本控件文档-UISegment属性 Fullscreen UISegment属性技术博客http://www.cnblogs.com/ChenYilong/ 新浪 ...
- Android笔记之广播
为了容易理解,可以将广播代入到事件模型中,发送广播消息看做是触发event,BroadcastReceiver是处理事件的回调逻辑. 广播这种模型中涉及到两个角色,就是广播的发送者和接收者,所以会涉及 ...
- 无需登录-悟空CRM 存储型XSS
无需登录-悟空CRM 存储型XSS 审计悟空的缘由是看见某云爆出CRM的getshell,于是就想着去挖出来瞅瞅!但可能自己把自己给局限了,就想着去挖那些无限制访问的文件. 故事的发生点 漏洞文件:/ ...
- 连接数据库及出现System.AccessViolationException错误的解决方法
调试后发现, connection.Open();以后报错,System.AccessViolationException: 尝试读取或写入受保护的内存.这通常指示其他内存已损坏,网上搜了很多都没有作 ...
- 利用github pages五分钟建好个人网站+个人博客
笔者自己在建个人网站/个人博客的时候其实遇到了不少麻烦,但是都一一解决了,这里教给大家最简单的方式. 首先你需要一个GitHub账号,访问https://github.com创建新账号即可. 然后访问 ...