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 ...
随机推荐
- POJ - 2976 Dropping tests && 0/1 分数规划
POJ - 2976 Dropping tests 你有 \(n\) 次考试成绩, 定义考试平均成绩为 \[\frac{\sum_{i = 1}^{n} a_{i}}{\sum_{i = 1}^{n} ...
- [LeetCode] 398. Random Pick Index ☆☆☆
Given an array of integers with possible duplicates, randomly output the index of a given target num ...
- 快速搭建Spring Boot项目
Spring boot是Spring推出的一个轻量化web框架,主要解决了Spring对于小型项目饱受诟病的配置和开发速度问题. Spring Boot 包含的特性如下: 创建可以独立运行的 Spri ...
- git爬坑不完全指北(二):failed to push some refs to ‘XXX’的解决方案
报错分析 从字面理解,这个报错的意思就是说远程仓库里有一个改动是本地仓库里没有的,所以在push前要先把远程仓库上的改动pull或者fetch到本地仓库.然后再执行push的操作,把本地 ...
- python scrapy 基本操作演示代码
# -*- coding: utf-8 -*- import scrapy # from quotetutorial.items import QuoteItem from quotetutorial ...
- c/c++ const 用法
概述 1. const有什么用途? 在 c程序中,const的用法主要有定义常量.修饰函数参数.修饰函数返回值等3个用处. 在c++程序中,它还可以修饰函数的定义体,定义类中某个成员为常态函数,即不改 ...
- 如何更优雅地写Django REST framework
DRF(Django REST framework)是一个高度封装的框架,这导致想完成一件事情可以通过重写父类函数的方式从DRF的各个层次来写,都能够实现目的. 比如写视图函数,可以用继承APIVie ...
- JS设计模式——11.适配器模式
适配器模式概述 适配器模式可用来在现有接口和不兼容的类之间进行适配.使用这种模式的对象又叫包装器(wrapper). 适配器特点 从表面看,适配器模式很像门面模式.她们都要对别的对象进行包装并改变其呈 ...
- css_清除浮动的4种方式
浮动布局和定位布局为css中布局的常用的两种布局方式,而且兼容性会比较好.随着flex的流行,以后会是主流,新的东西好用,兼容不太好.IE10以下不兼容flex布局. float布局会脱离文档流,对页 ...
- msfpayload反弹shell
1.前期-- 情景就是当我们获得webshell时,我们想留下我们的后门,这个时候我们可以用到msfpayload与msfconsole结合使用 启动PostgreSQL服务:service post ...