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作为返回值):

  1. 直接获取FirstName,LastName

    public IEnumerable<Figure> PostByUrl(string firstName, string lastName)

    url: http://localhost:4296/api/Figure/PostByUrl?FirstName=Catelyn&LastName=Tully

  2. 通过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

  3. 通过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的更多相关文章

  1. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  2. Asp.Net WebApi核心对象解析(上篇)

    生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...

  3. 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 ...

  4. ASP.NET WEBAPI 简单CURD综合测试(asp.net MVC,json.net,sql基础存储过程和视图,sqlhelper,json解析)

    草图   真正的后端是不管前端是什么平台,用什么语言的,JSON格式的数据应该可以应对.用ASP.NET WEBAPI尝试做一个后端,实现最基本的CURD,业务逻辑和数据库操作都放在后端,前端只需要正 ...

  5. ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试

    帮助HELP 要实现如WCF中的Help帮助文档,Web API 2 中已经支持很方便的实现了这一特性  http://www.asp.net/web-api/overview/creating-we ...

  6. Asp.net WebApi + EF 单元测试架构 DbContext一站到底

    其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Inc ...

  7. ASP.NET WebAPI 09 Controller的激活

    在Controller之前我们先回顾一下HttpMessageHandler通道. 在这个图中我留一个HttpContollerDispatcher没有说明.因为这个类也是继承自HttpMessage ...

  8. 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 ...

  9. ASP.NET WebApi 增删改查

    本篇是接着上一篇<ASP.NET WebApi 入门>来介绍的. 前言 习惯说 CRUD操作,它的意思是"创建. 读取. 更新和删除"四个基本的数据库操作.许多 HTT ...

  10. 细说Asp.Net WebAPI消息处理管道

    我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓S ...

随机推荐

  1. python中高阶函数与装饰器(3)

    >>> f = lambda x: x * x>>> f<function <lambda> at 0x101c6ef28> >> ...

  2. Java上传文件夹(Jersey)

    背景介绍:公司要在CMS系统上为运营人员提供一个功能供运营人员将做好的活动页面上传到阿里云存储上,上传的内容为一个文件夹,文件夹内部有.html网页,JS文件夹下有JS文件,CSS文件夹下有样式表,I ...

  3. Vue.js学习笔记(一)

    其它前端主流框架可以做的事,Vue.js几乎都可以做, nuxt框架:可以实现vue的服务器端渲染, weex:使用vue语法编写原生app. 基础内容 基础语法 MVVM设计模式 前端组件化 vue ...

  4. PHP7 学习笔记(二)PHP5.9 升级到PHP7 遇到的一些坑的记录(php-fpm 图解)

    apache_event_php-fpm 示意图: nginx-php-fpm示意图: Worker-Master-Server TCP-Nginx_PHP Nginx-FastCGI 1.使用$_G ...

  5. java 连接Kafka报错java.nio.channels.ClosedChannelExcep

    Java 客户端连接Kafka报如下错误 java.nio.channels.ClosedChannelExcep 是由于Kafka server.properties中的advertised.hos ...

  6. Caffe的loss layer(转)

    英文可查:地址 1.SoftmaxWithLoss 对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布.该层可以分解为SoftmaxLayer+Multino ...

  7. 天梯赛 L2-023. (模拟) 图着色问题

    题目链接 题目描述 图着色问题是一个著名的NP完全问题.给定无向图 G = (V, E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解决这 ...

  8. def 的传参数的问题

    测试了一下.关于python 的函数def里面的传参数问题: 1.传参顺序: # codig:utf-8 def function(a,b=1,*args,**kwargs): print(a,'\n ...

  9. C# Func的同步、异步调用

    using System; namespace ActionDemo { class Program { static void Main(string[] args) { Console.Write ...

  10. 解决Maven并行编译中出现打包错误问题的思路

    解决Maven并行编译中出现打包错误问题的思路 并行构建 Maven 3.x 提供了并行编译的能力,通过执行下列命令就可以利用构建服务器的多线程/多核性能提升构建速度: mvn -T 4 clean ...