1.2.2python restful apiWeb API 具有怎样的特征

扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | |
| | | | | | |||
||外语考试
| | | | | | | | |
| 视频教程|
ASP.NET Web API 2框架揭秘
.NET领域再现力作 顶级专家精讲微软全新轻量级通信平台
定价:¥108.00
校园优惠价:¥81.00 (75折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
ISBN:8上架时间:出版日期:2014 年7月开本:16开页码:713版次:1-1
所属分类:
  ?这是一本注重实证的书,功能各异、多达120个可供下载的示例,大量最佳实践与实用性扩展,可直接用于解决实际开发问题。
?全新的学习方法,通过完整论证来实现彻底的融会贯通。
?本书可以作为讲设计架构的书来读,因为其以经过长期检验的经典架构作为学习素材,可很好地启发深度思考。
?讲原理的书同样足够实用。了解ASP.NET Web API框架的运行原理,才能写出最迎合框架的高效程序,才能找到解决具体项目问题的最佳扩展点。
?这是一本帮助你提升内功的书。虽然编程模式可以速成,但本书还是希望你最好对ASP.NET Web API或ASP.NET MVC有基本概念。
《ASP.NET Web API 2框架揭秘》以实例演示的方式介绍了很多与ASP.NET Web API 相关的最佳实践,同时还提供了一系列实用性的扩展。《ASP.NET Web API 2框架揭秘》详细讲解了ASP.NET Web API 从接收请求到响应回复的整个流程,包括路由、Http Controller 的激活、Action 方法的选择与执行、参数的绑定与验证、过滤器的执行和安全等相关的机制。
除此之外,《ASP.NET Web API 2框架揭秘》在很多章节还从设计的角度对ASP.NET Web API 的架构进行了深入分析,所以可以将《ASP.NET Web API 2框架揭秘》当作一本架构设计的书来读。
虽然与市面上任何一本相关的书相比,《ASP.NET Web API 2框架揭秘》走得更远并更加近距离地触及到ASP.NET Web API 框架的内核,但是就其内容本身来讲却没有涉及太多“高深莫测”的知识点,所以阅读《ASP.NET Web API 2框架揭秘》不存在太高的门槛。如果你觉得自己对ASP.NET Web API 所知甚少,可以利用《ASP.NET Web API 2框架揭秘》来系统地学习ASP.NET Web API;如果你觉得自己对ASP.NET Web API 足够精通,也一定能够通过阅读《ASP.NET Web API 2框架揭秘》发现自己知识的“盲点”。
蒋金楠(网名Artech),《WCF全面解析(上、下册)》《ASP.NET MVC 4框架揭秘》《ASP.NET MVC 5框架揭秘》等多部畅销IT图书作者,现就职于一知名软件公司担任高级软件顾问。拥有一个访问量超过200万的个人博客,2012年度51CTO IT博客大赛10佳得主。年被连续7次评为微软MVP,同时也是少数几个跨多领域(Solutions Architect、Connected System、Microsoft Integration和ASP.NET/IIS )的MVP之一。
作者博客: /artech
作者微博: /artech
电子邮箱:
微信公众账号:Artech1981
《ASP.NET Web API 2框架揭秘》
第1 章 概述 1
1.1 何为Web 2
1.1.1 TCP/IP 与HTTP 2
1.1.2 Web 资源 4
1.1.3 HTTP 事务 6
1.1.4 HTTP 报文 7
1.2 RESTful Web API 8
1.2.1 为什么叫这个奇怪的名字 9
1.2.2 RESTful Web API 具有怎样的特征 10
1.3 初识ASP.NET Web API 18
1.3.1 构建解决方案 18
1.3.2 定义Web API 20
1.3.3 以Web Host 方式寄宿Web API 21
1.3.4 以Self Host 方式寄宿Web API 27
1.3.5 利用HttpClient 调用Web API 28
1.3.6 创建一个“联系人管理器”应用 31
第2 章 路由 41
2.1 ASP.NET 路由 42
2.1.1 请求URL 与物理文件的分离 42
  我觉得大部分人都是“眼球动物”,他们关注的往往都是目光所及的东西。对于很多软件从业者来说,他们对看得见(具有UI界面)的应用抱有极大的热忱,但是对背后支撑整个应用的服务却显得较为冷漠。如果我们将整个“生态系统”比喻成海面上漂浮的冰山,我们所能看到的只是露出水面的冰山一角,水面之下才是一个“庞然大物”。
  提到服务,我们自然想到Web Service。但是传统意义上的Web Service却有点名不副实,因为支撑它的其实不是Web而是SOAP,承载一个Web Service甚至可以根本不需要Web。随着互联网的普及,互联网应用(尤其移动互联网应用)已经成为主流,“SOAP之重”已经越来越令我们无法承受,于是采用REST架构风格并直接采用Web进行通信的轻量级Web Service走进了我们的视野并登堂入室。为了与传统的基于SOAP的Web Service进行区分,我们将后者称为Web API。
  很多人鼓吹SOAP已死,我个人对此持不同的看法。上面讲的“重”与“轻”都是不带任何感情色彩的中性词,至于优劣评价则决定于它们是否适合应用的场景。到目前为止,对于企业级应用之间的内部集成互联,我觉得传统的Web Service依然是最好的选择。传统Web Service应用的领域貌似在不断被Web API占据,但是后者并不能完全被视为前者的替代品,它只是让“踩过界”的Web Service退回到它应该坚守的领地。Web Service和Web API在各自适合的领域各司其职,形成一种理想的“路归路、桥归桥”的状态。
  Web Service和Web API的合理布局同样也体现在微软技术平台上。WCF在过去是唯一的选择,这是一个具有“SOAP”基因的通信平台,微软后来利用扩展让它提供了针对REST的支持。正因为如此,如果使用WCF来构建Web API的话,我们依然需要采用传统的编程方式,Web API的“简单、快捷”完全得不到体现。微软意识到在一个“重量级”通信框架上通过扩展实现“轻量级”的通信,还不如重新构建一个通信平台,于是ASP.NET Web API应运而生。
  这不是一本传统意义上的入门书籍
  任何一本书都具有对应的受众群体,所以我不得不将这句话放在最前面,并且希望所有打算购买此书的读者能够看到。如果你之前对ASP.NET Web API(或者ASP.NET MVC)完全没有概念,在某一天突然被安排去开发一个需要使用到ASP.NET Web API的项目,你希望有那么一本书能够在一个星期或者更短的时间内帮助你掌握ASP.NET Web API基本的编程方式,那么这本书不适合你。
  我个人很喜欢金庸和古龙的武侠小说,我觉得学习某种开发框架就像是练一门武功。一门武功具有“招式”和“心法”之分,外在的招式可以速成,而内功心法绝非一蹴而就,但是没有内功心法支撑的招式只是花拳绣腿。对于某种开发框架来说,基本的编程模式就是招式,框架本身的设计就是心法。
  “训练招式”和“传授心法”的书我们都需要,并且不能根据这点来评判一本书的优劣。就本书而言,这是一本苦练内功心法的书。对于大部分读者来说,我觉得在很短的时间内完全掌握本书的内容并不是一件容易的事情,所以如果你没有决定花较多的时间和精力阅读此书的话,我还是建议你选择其他相关的书籍。
  我在《ASP.NET MVC 4框架揭秘》一书中写过这么一段话:“掌握ASP.NET MVC具有三个层次,了解基本的编程模式为第一层次,能够清晰认识ASP.NET MVC框架本身从请求接收到响应回复的整个流程为第二层次,最高的层次则是能够灵活自由地利用ASP.NET MVC提供的扩展点解决开发过程的实际问题”。这句话同样适用于针对ASP.NET Web API的学习,本书写作的目的是使第一层次的读者快速进入第二层次和第三层次。
  这是一本实用的书吗
  可能有人觉得这本讲述ASP.NET Web API架构设计和剖析框架运行原理的书没有什么“实际”的意义,因为我们每天的日常工作就是编程,知道了ASP.NET Web API从请求接收到响应回复之间的整个处理流程并不会对实际工作产生实质性的改变。其实这种想法是极端错误的,因为我们编写的程序最终是在框架上运行的,程序的高效性决定于它是否能够最大限度地“迎合”框架的运行机制,所以了解ASP.NET Web API框架的运行原理有利于我们写出高质量的程序。
  常年以来,我个人的主要工作就是维护和设计公司内部的一个开发框架。这是一个在集团内部广泛采用的针对.NET的开发框架,它的存在使流水线式的软件开发成为可能,这个框架不仅仅提高了生产效率和产品质量,还降低了对最终开发人员技能的要求。之所以能够做到这一点,原因在于几乎所有与业务无关的功能(比如日志、异常处理、权限控制、安全审核、事务处理等)都由这个框架来完成,最终的开发人员只需要实现具体的业务逻辑就可以了。
  对于这个开发框架来说,针对相应开发技术所做的扩展和工具是一个重要的组成部分,所以出于本职工作的需要,我不得不对采用的主流开发技术进行深入研究,因为只有在对其内部运行原理了然于胸的情况下才能精准地找到一个最适合的扩展点来解决具体项目开发过程中遇到的问题。很多读者都问过我同样一个问题:“为什么你能够了解那么多关于WCF、ASP.NET MVC和ASP.NET Web API这些技术的内部细节?”我现在告诉你们答案:因为这是我本职工作的一部分。为了将这些实用的研究成果服务于更多的人,我将它们写到我的多本书中。
  可以将本书当成一本讲述设计架构的书来读
  在我的周围存在着这样一些人,这些人以刚毕业一两年的大学生为主,他们大都工作勤奋、聪明好学,手中经常捧着GoF的《设计模式》,总是希望将书中的设计模式应用到具体项目之中,或者希望通过项目的实践来印证他们在书本上学到的设计模式,但是理论和实践之间的距离总让他们感到困惑。
  要从真实的项目或者产品中学习“实用”的软件架构设计知识,先得确定目标项目或者产品中采用的架构思想和设计模式是正确的,而我们参与的很多项目其实被“架构”得一塌糊涂。对于像ASP.NET这样的产品,其基础架构能够在很长一段时间内保持不变,本身就证明了应用在上面的架构设计的正确性,它们不正是我们学习架构设计最好的素材吗!
  就我个人而言,很多设计架构方面的知识都是近年来在深入研究WCF、ASP.NET MVC、ASP.NET Web API、Enterprise Library和Unity这些开发技术和开源框架的过程中获取的。对于那些只会拿猫、狗这些东西举例的设计模式的书籍来说,这些内容是学不到的。本书除了介绍一些技术细节,实际上还将ASP.NET Web API的整个架构设计展现在了读者面前,相信有心的读者会从中学到不少关于架构设计方面的知识。
  如果你手头刚好有一本《ASP.NET MVC 4框架揭秘》(《ASP.NET MVC 5框架揭秘》也即将出版),可以将这两本书对照着一起看。对于相同的功能点,认真思考一下为何它们在ASP.NET MVC和ASP.NET Web API中会采用不同的设计,两种设计孰优孰劣,我想收获会更大。
  本书承载了个人针对新技术的学习方法
  在过去几年中,有些热心的读者和网友都向我咨询过一个问题:“对于一门新的技术,如何能够在短时间内掌握其精髓”。这是一个学习方法的问题,虽然我觉得每个人都有适合自己的学习方法,但我还是刻意地将我个人采用的方式体现在本书之中,希望它对某些读者有用。如果读者是个有心人,应该可以看到我在介绍某个知识点的时候,不仅仅会告诉你“是什么”和“为什么”,还会告诉你“如何证明是这样”。换句话说,我不仅仅将某个论点抛给你,还为你展现了整个论证的过程,实际上我在学习过程中就是这么做的。
  互联网应用尤其是移动互联网应用的普及,让采用Web直接通信的轻量级Web Service成为主流,本书要讲的正是ASP.NET Web API。它是一个全新的通信平台,因为微软没有选择在重量级框架上通过扩展实现轻量级通信。本书宗旨是清晰呈现消息处理管道,以使读者完全理解从接收请求到响应回复的全流程,并彻底掌握路由、HttpController激活、Action方法的选择与执行、参数的绑定与验证、过滤器的执行和安全等相关机制。
作者其它作品¥89.00¥66.75
同类热销商品¥30.00¥21.90
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved您所在的位置: &
1.3.3 以Web Host 方式寄宿Web API(1)
1.3.3 以Web Host 方式寄宿Web API(1)
电子工业出版社
《ASP.NET Web API 2框架揭秘》本书详细讲解了ASP.NET Web API 从接收请求到响应回复的整个流程,包括路由、Http Controller 的激活、Action 方法的选择与执行、参数的绑定与验证、过滤器的执行和安全等相关的机制。本节为大家介绍以Web Host 方式寄宿Web API。
1.3.3 以Web Host 方式寄宿Web API(1)
我们在前面已经提到过了,虽然被命名为ASP.NET Web API,但是其核心的消息处理管道却是独立于ASP.NET 平台的,所以我们可以对相同的Web API 实施不同的寄宿方式。寄宿的本质就是利用一个具体的应用程序为Web API 提供一个运行的环境,并最终解决&请求的接收和响应的回复&问题。作为寄宿的一种主要形式,Web Host 就是创建一个ASP.NET Web应用作为Web API 的宿主。
如图1-2 所示,采用Web Host 方式寄宿Web API 的宿主程序WebHost 是一个空的ASP.NET 应用。除了让它引用定义ContactsController 的WebApi 项目之外,我们还需要为其添加如下这些必需的程序集引用。除了程序集&System.Net.Http.dll&(它属于.NET Framework原生的程序集)之外,其余3 个均可以在目录&%ProgramFiles%\Microsoft ASP.NET\ASP.NETWeb Stack 5\Packages\&中找到。
System.Web.Http.dll(\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\)
System.Net.Formatting.Http.dll(\Microsoft.AspNet.WebApi.Client.5.0.0\lib\net45\)
System.Web.Http.WebHost.dll(\Microsoft.AspNet.WebApi.WebHost.5.0.0\lib\net45\)
System.Net.Http.dll
与ASP.NET MVC 一样,如果采用Web Host 的方式来寄宿Web API,ASP.NET 自身的路由系统会成为接收请求的第一道屏障。在将请求递交给ASP.NET Web API 自己的消息处理管道之前,路由系统会解析出当前请求访问的目标HttpController 和Action 的名称。我们需要做的就是根据需求注册相应的路由,这也是采用Web Host 寄宿方式所需的唯一操作。
我们在WebHost 项目中添加一个Global.asax 文件, 并按照如下的形式在其Application_Start 方法中注册了一个模板为&api/{controller}/{id}&的路由。此模板由3 部分组成,静态文本&api&表示其前缀,后面是两个路由参数。前者({controller})表示目标HttpController的名称,后者({id})可以映射为目标Action 方法的同名参数(比如ContactsController 的Get方法的参数id),这是一个可以缺省的路由参数(RouteParameter.Optional)。
public&class&Global&:&System.Web.HttpApplication &{ &protected&void&Application_Start(object&sender,&EventArgs&e) &{ &GlobalConfiguration.Configuration.Routes.MapHttpRoute( &Name&:&&DefaultApi&, &routeTemplate&:&&api/{controller}/{id}&, &defaults&:&new&{&id&=&RouteParameter.Optional&}); &} &}&
如上面的代码片段所示,路由注册是通过调用代表全局路由表的HttpRouteCollection 对象的扩展方法MapHttpRoute 来完成的。GlobalConfiguration 的静态属性Configuration 返回一个代表当前配置的HttpConfiguration 对象,全局路由表就注册在它的Routes 属性上。
如果你了解ASP.NET MVC 的路由注册,可能觉得奇怪:注册路由的模板中并没有表示目标Action 的路由参数,ASP.NET Web API 如何根据请求确定哪个Action 方法应该被调用呢?答案其实很简单:它能根据请求采用HTTP 方法来确定目标Action 方法。当然,在注册路由模板中提供代表Action 名称的路由参数({action})也是支持的。
在默认情况下,通过Visual Studio(VS 2012 或者VS 2013,本书采用的是后者)创建的Web 应用总是使用IIS Express 作为服务器,它会自动为我们指定一个可用的端口号。为了更好地模拟真实发布环境,同时避免&跨域资源共享&⑥带来的困扰,我们采用本地IIS作为服务器。如图1-3 所示,WebHost 项目在IIS 中映射的Web 应用采用的URL 为&http://localhost/WebHost&。
实际上到此为止,Web API 的Web Host 寄宿工作就已经完成,我们可以利用浏览器来调用寄宿的Web API 来判断寄宿工作是否成功。由于浏览器在默认情况下访问我们在地址栏中输入的地址总是采用HTTP-GET 请求,所以我们只能利用它来调用支持HTTP-GET 的Action 方法,即定义在ContactsController 中的Get 方法。
根据我们注册的路由,如果访问目标地址&http://localhost/webhost/api/contacts&可以获得所有联系人列表;如果目标地址为&http://localhost/webhost/api/contacts/001&,则可以得到ID 为&001&的联系人信息,图1-4 证实了这一点。
从图1-4 可以看到,我们采用的浏览器为Chrome,获取的联系人列表总是表示为XML,这是为什么呢?在前面介绍REST 的时候,我们曾经提及一种旨在识别客户端期望的资源表示形式并被称为&内容协商&的机制,它可以根据请求携带的相关信息来判断客户端所期望的响应资源表现形式。
对于ASP.NET Web API 来说,它会优先利用请求报头&Accept&携带的媒体类型来确定响应内容采用的表现形式。如下所示的是Chrome 访问& &发送请求的内容,它之所以会得到以XML 表示的响应是因为&Accept&报头指定的媒体类型列表中只有&application/xml&被ASP.NET Web API 支持。如果我们使用IE,请求的&Accept&报头将携带不同的媒体类型列表,我们实际上会得到以JSON 格式表示的响应结果。
GET&http://localhost/webhost/api/contacts/001&HTTP/1.1 &Host:&localhost &Connection:&keep-alive &Cache-Control:&max-age=0&Accept: &text/html,application/xhtml+xml,application/q=0.9,image/webp,*/*;q=0.8 &User-Agent:&Mozilla/5.0&(Windows&NT&6.1)&AppleWebKit/537.36&(KHTML,&like&Gecko) &Chrome/31.0.1650.63&Safari/537.36 &Accept-Encoding:&gzip,deflate,sdch &Accept-Language:&en-US,q=0.8,zh-CN;q=0.6,zh-TW;q=0.4&
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码
51CTO读书频道活动讨论群:
【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
《ASP.NET Web API 2框架揭秘》以实例演示的方式介绍了很多与ASP
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 181人学习过讲师: 421人学习过讲师: 127人学习过
本书是Linux 之父林纳斯?托瓦兹的自传,内容不只包括
本书为作家王蒙最新作品,有对国家顶层设计的看法,有
这本激励人心的成功指南告诉我们:伟大的成功背后都隐
本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部构造,包含了非常全面的编程参考。它提
51CTO旗下网站加载中,请稍候...
加载中,请稍候...
商品编号:
该商品已下柜,非常抱歉!
加载中,请稍候...
ASP.NETWebAPI2框架揭秘
加载中,请稍候...
商品介绍加载中...
扫一扫,精彩好书免费看
服务承诺:
京东平台卖家销售并发货的商品,由平台卖家提供发票和相应的售后服务。请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...加载中,请稍候...
加载中,请稍候...
商品编号:
该商品已下柜,非常抱歉!
加载中,请稍候...
ASP.NET Web API 2框架揭秘
加载中,请稍候...
商品介绍加载中...
扫一扫,精彩好书免费看
服务承诺:
京东平台卖家销售并发货的商品,由平台卖家提供发票和相应的售后服务。请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...

我要回帖

更多关于 php restful api 的文章

 

随机推荐