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 ...
随机推荐
- P2054 [AHOI2005]洗牌
P2054 [AHOI2005]洗牌 题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度 ...
- 使用SSH-Xsheel文件传输
借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器. 使用命令前需要 apt-get install lrzsz 如果提示源找不到 ...
- 2017 清北济南考前刷题Day 7 afternoon
期望得分:100+100+30=230 实际得分:100+100+30=230 1. 三向城 题目描述 三向城是一个巨大的城市,之所以叫这个名字,是因为城市中遍布着数不尽的三岔路口.(来自取名力为0的 ...
- Zabbix监控PV和UV
Zabbix-server:172.21.97.153 Zabbix-agent(Nginx):172.17.27.61 # Nginx日志如下: # head -3 Syz.access.log w ...
- Redis集群部署(redis + cluster + sentinel)
概述说明 说明:本次实验采用c1.c2.c3三台虚拟机完成,每台服务器上都部署一个master.一个slave和一个sentinel.当某主节点的挂了,相应的从节点替位:当某主节点及主节点对应的从节点 ...
- 关于JavaScript代码的执行效率总结
Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...
- Druid.io SQL乱码问题
1.场景 1.1.依赖版本 avatica-core 1.11.0 druid 0.12.0 1.2.问题重现: 使用Avatica JDBC查询语句:SELECT score FROM studen ...
- webrtc前景如何
首先WebRTC是什么? WebRTC --- Web browsers with Real-Time Communications (RTC). WebRTC是一个免费.开放的项目.使web浏览器通 ...
- TCP/IP 网络编程的理解
一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程 ...
- 【树】ztree
ztree前端参见官网http://www.ztree.me/v3/main.php Action示例 public String initLabServerTree(){ return SUCCES ...