重温ASP.NET WebAPI(一)初阶
重温ASP.NET WebAPI(一)初阶
前言
本文为个人对WebApi的回顾无参考价值。主要简单介绍WEB api和webapi项目的基本结构,并创建简单地webaapi项目实现CRUD操作。
在商业应用领域中,应用之间的关联是相当重要的,应用之间如移动应用或者单页应用的创建,都需要强大的后端服务提供相应的数据以便进行CRUD操作。
WCF and WebApi 的不同
WCF是基于SOAP协议,支持多种传输协议,多种编码,寄宿于.net framework下,需要生产WSDL代理类文件,更安全可靠。
WebApi是基于HTTP协议,支持XML和json,开源可独立出.net framework。REST风格更适合。
|
WCF |
ASP.NET Web API |
|
支持多种传输协议(HTTP, TCP, UDP和自定义传输协议),允许在协议之间进行切换 |
只支持HTTP协议。比较适合传输来自各种浏览器、移动应用。 |
|
支持多种编码格式(Text, MTOM, Binary),允许相互切换。 |
支持各种媒体类型,如XML和JSON |
|
符合Web服务标准(可靠的数据,传输,和数据安全) |
不支持高标准的协议,如数据可靠性或者传输准确性。基于基本的协议和排版,如HTTP, WebSockets, SSL, JQuery, JSON, XML |
|
支持请求回复、单线和多重消息交换模式 |
支持HTTP的请求响应模式,但也支持扩展的,如SignalR和WebSocket的整合 |
|
基于SOAP协议,因此需要被描述为WSDL,允许自动化工具生成客户端代理,即使服务含有复杂的模式 |
支持多种方式描述API。从自动生成HTML帮助页面描述,到使用结构metadata整合ODATA到APIs中等等。 |
|
寄宿于.net framework |
寄宿于.net framework但是开源,也能够独立的下载 |
使用WCF创建可靠,安全的web服务,可以支持多种传输协议。使用WebAPI创建基于http协议的服务,服务更广的用户群。当创建和设计新的基于REST风格的服务是,采用webapi。虽然WCF也提供支持写REST风格的服务,但是Webapi的支持更好。
SOAP 和 ASP.NET Web 服务
SOAP是基于标准XML的协议,能够与HTTP通讯。可以理解为程序之间通过以XML为格式的SOAP协议进行通讯。ASP.NET Web服务提供创建SOAP协议的web服务。
SOAP的问题
- 元数据metadata也会被传输,占用传输空间。
- 需要在客户端创建代理类。当服务端更新服务,客户端也要及时更新代理类。
REST
REST协议用于分布式环境的数据传输,它使我们能够将分布式服务当做一种资源,并通过简单的HTTP协议来操作这些资源。
REST对应数据库CRUD操作的方式,分为4种:
- GET:相当于CRUD操作中的R,数据获取
- PUT:相当于CRUD操作中的U,数据更改
- POST:相当于CRUD操作中的C,数据创建
- DELETE:相当于CRUD操作中的D,数据删除
举例说明
当站点为:www.cnblogs.com/blogs, 则代表获取博客列表数据
当站点为www.cnblogs.com/blogs/1,则取决于type类型,如果是put,则创建新的BLOG。
如果是post,则更新当前blog。如果是delete,则删除当前blog。
REST与SOAP对比
- 只有使用的数据被传输,而没有元数据。
- 省略了代理的创建。
WCF REST服务
WCF比web服务要晚出来。它提供更安全和成熟的方式去创建服务。通过WCF,我们可以定义自己的服务,并配置相关的协议如HTTP,TCP或者IPC甚至消息队列。WCF也可以创建REST服务。
WCF创建REST服务,需要我们做大量的配置工作。通常WCF适用于一些特殊场景,如单向消息传输,消息队列,双工通信。但是使用WCF创建REST服务过于复杂,而且局限于.net 3.5 framework。
ASP.NET Web API介绍
微软提出ASP.NET Web API可以理解为一个框架,用于快速简易的创建REST服务。
Web API的入门创建


我们可以点开Values的controller,它集成ApiController,实现的一般的Get,Post,Put,Delete的功能。并提供了响应的URL路径说明。

public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
} // GET api/values/5
public string Get(int id)
{
return "value";
} // POST api/values
public void Post([FromBody]string value)
{
} // PUT api/values/5
public void Put(int id, [FromBody]string value)
{
} // DELETE api/values/5
public void Delete(int id)
{
}
}

打开App_Start文件下的RouteConfig.cs文件,可以看到完整的api路由设置。

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}

实现自己的webapi

public class UserController : ApiController
{
public IHttpActionResult GetRead()
{
var employeeListViewModel = new EmployeeListViewModel(); var empBal = new EmployeeBusinessLayer();
var employees = empBal.GetEmployees(); var empViewModels = employees.Select(emp => new EmployeeViewModel
{
Name = emp.Name,
Salary = emp.Salary.ToString(),
SalaryColor = emp.Salary > 15000 ? "yellow" : "green"
}).ToList(); employeeListViewModel.Employees = empViewModels;
employeeListViewModel.UserName = User.Identity.Name;
return Ok(employees);
}
}

以上是初阶的内容,进阶地址:
http://www.cnblogs.com/ruanyifeng/p/5455105.html
重温ASP.NET WebAPI(一)初阶的更多相关文章
- 重温ASP.NET WebAPI(二)进阶
重温ASP.NET WebAPI(二)进阶 介绍 本文为个人对WebApi的回顾无参考价值. 本文内容: Rest和UnitOfWork 创建WebAPi的流程 IOC-Unity的使用 MEF ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
- ASP.NET WebApi 文档Swagger深度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws 写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...
- ASP.NET WebApi 文档Swagger中度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws 写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...
- Creating a Clean, Minimal-Footprint ASP.NET WebAPI Project with VS 2012 and ASP.NET MVC 4
Creating a Clean, Minimal-Footprint ASP.NET WebAPI Project with VS 2012 and ASP.NET MVC 4 Building O ...
- Nodejs初阶之express
PS: 2014/09/24 更新<Express 4.X 启航指南>,欢迎阅读和评论:) 老规矩,开头部分都是些自娱自乐的随想,想到哪写到哪... 到今天俺已经在俺厂工作俩年零几天了 ...
- ASP.NET WEBAPI 的身份验证和授权
定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...
随机推荐
- 什么是“HTML”?HTML的“标记”是什么?
①文本标记语言 即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言. ②HTML 标记标签 通常被称为 HTML 标签 (HTML tag). ③HTM ...
- selenium 之定位方法
1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...
- 前端学习之NaN浅析
在学习Java集合的时候遇到了Float.isNaN(float)函数,点进去一看就不理解了,函数实现如下: public static boolean isNaN(float v) { return ...
- Python3.x:如何识别图片上的文字
Python3.x:如何识别图片上的文字 安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google ...
- Phred-scale quality scores的相关内容
phred-scale quality score起源于人类基因组计划,最初是用来评估碱基质量分数,后来,被广泛的推广到基因领域的其他内容. phred-scalequality score表示这件事 ...
- 如何安装python .whl包
1.最简单的办法是是python -mpip install *** 配置过环境变量也可以 pip install *** 但是由于墙的原因,很大概率失败.可以找到对应网站下载对应的.whl 2.下载 ...
- 照着官网来安装openstack pike之安装dashboard
上文提到了利用命令行下使用openstack的命令来创建虚拟机,这里选择安装dashboard来安装基于web界面的openstack平台 利用dashboard界面来创建虚拟机 dashboard这 ...
- httpd结合php的fpm模式
httpd2.4版本的编译安装,不再赘述,查看上一篇:http://www.cnblogs.com/jsonhc/p/7134053.html 从官网下载php源码包:php-5.6.30.tar.b ...
- ThreadPoolExecutor源码浅析
目录 初始化 ctl变量 添加任务 addWorker方法 worker实现 执行任务 关闭连接池 参考 初始化 ThreadPoolExecutor重载了多个构造方法,不过最终都是调用的同一个: p ...
- NOIP2014 T4 子矩阵 dfs+dp
最近在狂补题啊QAQ... 打算先把NOIP的干掉吧... 点我看题 链接还是放洛谷的了... 题意:给一个n*m的矩阵,在这个矩阵里选 r 行 c 列,然后这 r 行 c 列所相交的格子为新矩阵的, ...