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. Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

    简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...

  2. 设计模式之————依赖注入(Dependency Injection)与控制反转(Inversion of Controller)

    参考链接: 依赖注入(DI) or 控制反转(IoC) laravel 学习笔记 —— 神奇的服务容器 PHP 依赖注入,从此不再考虑加载顺序 名词解释 IoC(Inversion of Contro ...

  3. ASP.NET对无序列表批量操作的三种方法

    在网页开发中,经常要用到无序列表.事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用.本篇介 ...

  4. AngularJS 、Backbone.js 和 Ember.js 的比较

    1 介绍 我们准备在这篇文章中比较三款流行于Web的“模型-视图-*”框架:AngularJS.Backbone和Ember.为你的项目选择正确的框架能够对你及时交付项目的能力和在以后维护你自己代码的 ...

  5. 提高PowerShell脚本效率的五个常用方法

    PowerShell脚本运行慢怎么办?影响到正常企业流程正常运转怎么办?本文利用例子和数据给大家带来让PowerShell运行更快的五个常用方法.本人拙见,希望能够给大家带来一点启发~ 1. 善用命令 ...

  6. 63、使用Timer类来实现定时任务

    定时任务 定时任务就是让计算机自动的每隔一段时间执行的代码.比如要实现这样的一个功能:让计算机每隔5秒钟,在控制台打印一个www.monkey1024.com可以使用java.util包下的Timer ...

  7. spfa+差分约束系统(C - House Man HDU - 3440 )+对差分约束系统的初步理解

    题目链接:https://cn.vjudge.net/contest/276233#problem/C 题目大意:有n层楼,给你每个楼的高度,和这个人单次的最大跳跃距离m,两个楼之间的距离最小是1,但 ...

  8. 关于注入抽象类报could not autowire field的问题

    昨天工作中遇到了一个很奇葩的问题,之前一直都没考虑过抽象类这块,一直用的注入接口实现类: 先看下错误: 因为在类中注入了一个抽象类,之前只有一个继承子类,所以没问题,这里要说一下抽象类的实例化: 抽象 ...

  9. 【逆向知识】PE ASLR

    1.知识点 微软从windows vista/windows server 2008(kernel version 6.0)开始采用ASLR技术,主要目的是为了防止缓冲区溢出 ASLR技术会使PE文件 ...

  10. 【前端vue开发】Hbuilder配置Avalon、AngularJS、Vue指令提示

    偶尔也会研究一下前端内容,因为Hbuilder是基于eclipse开发的,所以用起来倍感亲切啊,而且在我尝试使用的几款前端开发工具中,Hbuilder的表现也是相当出色地,可以访问Huilder官网下 ...