《ASP.NET Web API 2框架揭秘》

时间:2022-12-10 23:16:18

《ASP.NET Web API 2框架揭秘》

基本信息

作者: 蒋金楠

出版社:电子工业出版社

ISBN:9787121235368

上架时间:2014-7-5

出版日期:2014 年7月

开本:16开

页码:732

版次:1-1

所属分类:计算机 > 软件与程序设计 > .NET > ASP.NET

《ASP.NET Web API 2框架揭秘》

更多关于》》》 《ASP.NET Web API 2框架揭秘》

编辑推荐

·这是一本注重实证的书,功能各异、多达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佳得主。2007—2013年被连续7次评为微软MVP,同时也是少数几个跨多领域(Solutions Architect、Connected System、Microsoft Integration和ASP.NET/IIS )的MVP之一。

作者博客: http://www.cnblogs.com/artech

作者微博: http://www.weibo.com/artech

电子邮箱:jiangjinnan@gmail.com

微信公众账号: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

2.1.2 实例演示:通过url 路由实现请求地址与web 页面的映射 43

2.1.3 asp.net 路由系统 47

2.1.4 注册路由映射 55

2.1.5 根据路由规则生成url 68

2.1.6 httphandler 的动态映射 70

2.2 asp.net web api 路由 73

2.2.1 请求与响应 73

2.2.2 asp.net web api 路由系统 77

2.2.3 注册路由映射 91

2.3 两个路由系统的衔接 94

2.3.1 hostedhttproute 与hostedhttproutecollection 94

2.3.2 httpcontrollerroutehandler 与httpcontrollerhandler 100

第3 章 消息处理管道 103

3.1 httpmessagehandler 管道 104

3.1.1 httpmessagehandler 104

3.1.2 delegatinghandler 106

3.1.3 httpserver 107

3.1.4 httproutingdispatcher 114

3.2 web host 模式下的消息处理管道 119

3.2.1 httpcontrollerhandler 119

3.2.2 实例演示:自定义httpmessagehandler 实现http 方法重写(s305) 126

3.3 self host 模式下的消息处理管道 130

3.3.1 httpbinding 130

3.3.2 httpselfhostserver 136

第4 章 httpcontroller 的激活 145

4.1 httpcontroller 146

4.1.1 httpcontrollercontext 147

4.1.2 httpcontrollerdescriptor 147

4.1.3 apicontroller 149

4.2 httpcontroller 是如何被创建的 151

4.2.1 程序集的解析 151

4.2.2 httpcontroller 类型的解析 161

4.2.3 httpcontroller 的选择 165

4.2.4 httpcontroller 的创建 173

4.2.5 httpcontroller 的激活与释放 178

4.3 ioc 的应用 183

4.3.1 利用unity 来认识ioc 183

4.3.2 基于ioc 的httpcontrolleractivator 185

4.3.3 基于ioc 的dependencyresolver 188

第5 章 action 的选择 191

5.1 httpactiondescriptor 192

5.1.1 reflectedhttpactiondescriptor 193

5.1.2 actionnameattribute 194

5.1.3 方法名决定http 方法 195

5.1.4 actionhttpmethodprovider 197

5.1.5 针对特性的缓存 200

5.2 httpparameterdescriptor 201

5.2.1 reflectedhttpparameterdescriptor 202

5.2.2 实例演示:解析action 方法参数描述信息 204

5.3 httpactionselector 205

5.3.1 apicontrolleractionselector 206

5.3.2 有效的action 方法 207

5.3.3 目标action 方法的选择 208

第6 章 特性路由 218

6.1 特性路由注册 219

6.1.1 httprouteinfoprovider 特性 219

6.1.2 基本路由映射 220

6.1.3 让url 模板能够尽可能反映资源的层次结构 222

6.1.4 为路由变量设置约束 226

6.1.5 通配符路由变量 227

6.1.6 缺省路由变量 228

6.1.7 设置uri 前缀 230

6.2 约束表达式的解析 231

6.2.1 rangerouteconstraint 232

6.2.2 inlineconstraintresolver 233

6.2.3 自定义约束 237

6.3 路由解析 241

6.3.1 routecollectionroute 241

6.3.2 实例演示:查看特性路由注册生成的routecollectionroute 对象 243

6.3.3 子路由对象的创建 248

6.3.4 httproutedata 的生成 255

第7 章 model 绑定(上篇) 262

7.1 model 绑定解决怎样的问题 263

7.1.1 基于httproutedata 的参数绑定 263

7.1.2 基于查询字符串的参数绑定 267

7.2 model 元数据的解析 268

7.2.1 model 元数据的层次化结构 268

7.2.2 modelmetadata 270

7.2.3 modelmetadataprovider 278

7.3 valueprovider 282

7.3.1 valueproviderresult 282

7.3.2 namevaluepairsvalueprovider 285

7.3.3 routedatavalueprovider 与querystringvalueprovider 295

7.3.4 compositevalueprovider 296

7.4 valueproviderfactory 296

7.4.1 routedatavalueproviderfactory 与querystringvalueproviderfactory 297

7.4.2 compositevalueproviderfactory 298

7.4.3 valueproviderfactory 的注册 299

7.4.4 自定义valueproviderfactory 301

第8 章 model 绑定(下篇) 304

8.1 modelbinder 305

8.1.1 modelbindingcontext 306

8.1.2 去除前缀后的二次绑定 307

8.1.3 compositemodelbinder 309

8.2 modelbinderprovider 310

8.2.1 compositemodelbinderprovider311

8.2.2 modelbinderattribute 312

8.2.3 model 绑定的流程 313

8.3 针对不同目标类型的model 绑定 314

8.3.1 简单类型 315

8.3.2 复杂类型 318

8.3.3 集合 327

8.3.4 数组 340

8.3.5 字典 343

8.3.6 最后一个modelbinder 350

8.4 modelstate 355

8.4.1 apicontroller 的modelstate 355

8.4.2 实例演示:获取model 绑定过程中由valueprovider 提供的数据(s808) 357

第9 章 参数的绑定 359

9.1 参数绑定系统全景展示 360

9.1.1 httpparameterbinding 361

9.1.2 actionvaluebinder 362

9.2 5 个原生的httpparameterbinding 365

9.2.1 modelbinderparameterbinding 365

9.2.2 formatterparameterbinding 368

9.2.3 httprequestparameterbinding 387

9.2.4 cancellationtokenparameterbinding 388

9.2.5 errorparameterbinding 390

9.3 httpparameterbinding 的创建策略 392

9.3.1 parameterbindingattribute 特性 392

9.3.2 注册参数绑定规则 397

9.3.3 httpparameterbinding 的创建策略 400

第10 章 参数的验证 406

10.1 几种参数验证方式 407

10.1.1 手工验证绑定的参数 407

10.1.2 使用validationattribute 特性411

10.1.3 创建自我验证数据类型 416

10.2 以modelvalidator 为核心的参数验证系统 418

10.2.1 dataannotationsmodelvalidator 421

10.2.2 requiredmembermodelvalidator 422

10.2.3 validatableobjectadapter 425

10.2.4 errormodelvalidator 426

10.3 基于数据注解特性的参数验证 431

10.3.1 validationattribute 特性 431

10.3.2 dataannotationsmodelvalidator 437

10.3.3 dataannotationsmodelvalidatorprovider 439

10.4 参数验证流程 442

10.4.1 modelvalidationnode 443

10.4.2 “验证树”是如何被建立起来的 448

10.4.3 “必需”数据成员的验证 457

10.4.4 bodymodelvalidator 462

第11 章 action 的执行 472

11.1 action 方法的执行 473

11.1.1 httpactioninvoker 473

11.1.2 actionexecutor 477

11.2 内容协商 484

11.2.1 contentnegotiator 484

11.2.2 mediatypeformatter 是如何被筛选出来的 486

11.2.3 如何确定响应字符集 498

11.3 httpactionresult 501

11.3.1 无响应主体的httpactionresult 502

11.3.2 含响应主体的httpactionresult 506

11.3.3 responsemessageresult 517

11.4 httpresponsemessage 的生成 518

11.4.1 actionresultconverter 518

11.4.2 从消息处理管道来看httpresponsemessage 的生成 523

第12 章 过滤器 527

12.1 filter 及其提供机制 528

12.1.1 filter 528

12.1.2 filterprovider 531

12.1.3 5 种filter 类型 539

12.2 认证与授权 540

12.2.1 identity 540

12.2.2 principal 544

12.2.3 authenticationfilter 548

12.2.4 authorizationfilter 554

12.3 针对action 方法执行前后的拦截 558

12.3.1 actionfilterattribute 559

12.3.2 实例演示:利用自定义actionfilter 实现对action 方法执行结果的缓存 565

12.4 异常处理与filter 的屏蔽 572

12.4.1 exceptionfilter 572

12.4.2 实例演示:利用自定义的exceptionfilter 集成entlib 进行异常处理(s1208) 574

12.4.3 overridefilter 579

第13 章 安全 585

13.1 iis/asp.net 认证 586

13.1.1 basic 认证 586

13.1.2 digest 认证 591

13.1.3 集成windows 认证 594

13.1.4 forms 认证 602

13.2 ssl/tls 608

13.2.1 非对称加密 608

13.2.2 通过ssl/tls 实现传输安全 614

13.2.3 ssl/tls 的应用 615

13.3 第三方认证 619

13.3.1 oauth 2.0 简介 620

13.3.2 implicit authorization grant 624

13.3.3 authorization code authorization grant 632

第14 章 跨域资源共享 643

14.1 同源策略 644

14.1.1 实例演示:跨域调用web api 645

14.1.2 jsonp 648

14.2 cors 规范 654

14.2.1 资源的授权 654

14.2.2 实例演示:利用自定义的messagehandler 支持跨域资源共享 658

14.3 cors 在asp.net web api 中的实现 667

14.3.1 实例演示:采用asp.net web api 原生的机制实现跨域资源共享(s1406) 668

14.3.2 cors 授权策略及其提供机制 670

14.3.3 资源授权的检验和cors 响应报头的生成 675

14.3.4 corsmessagehandler 678

第15 章 web api 的调用 685

15.1 httpclient 686

15.1.1 httpmessageinvoker 686

15.1.2 httpclienthandler 687

15.1.3 httpclient 697

15.2 客户端消息处理管道 700

15.2.1 httpmessagehandler 管道 700

15.2.2 httpclientfactory 703

15.3 面向“对象”编程 704

15.3.1 将数据对象写入请求消息 704

15.3.2 读取http 消息主体内容并反序列化为数据对象 707

附录a 实例列表 709

本图书信息来源:互动出版网

《ASP.NET Web API 2框架揭秘》的更多相关文章

  1. 感恩回馈,《ASP.NET Web API 2框架揭秘》免费赠送

      在继<WCF全面解析(上下册)>.<ASP.NET MVC 4框架揭秘>之后,我的另一本书<ASP.NET Web API 2框架揭秘>( 本书详细信息见&lt ...

  2. 《ASP&period;NET Web API 2框架揭秘》样章(PDF版本)

    <ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET ...

  3. ASP&period;NET Web API 2框架揭秘

    ASP.NET Web API 2框架揭秘(.NET领域再现力作*专家精讲微软全新轻量级通信平台) 蒋金楠 著   ISBN 978-7-121-23536-8 2014年7月出版 定价:108.0 ...

  4. 新作《ASP&period;NET Web API 2框架揭秘》正式出版

    我觉得大部分人都是“眼球动物“,他们关注的往往都是目光所及的东西.对于很多软件从业者来说,他们对看得见(具有UI界面)的应用抱有极大的热忱,但是对背后支撑整个应用的服务却显得较为冷漠.如果我们将整个“ ...

  5. asp&period;net web api 2框架揭秘文摘

    第一章 概述 URI 统一资源标识符 URL 统一资源定位符 http方法:get,post,put,delete,head等 状态码:100-199,请求已被接受: 200-299,成功状态: 30 ...

  6. ASP&period;NET Web API 2 框架揭秘

    这不是一本传统意义上的入门书籍 任何 —本书都具有对应的受众群体,所以我不得不将这句话放在最前面,并且希望所有 打算购买此书的读者能够看到.如果你之前对As氵NET W山API(或者AsPNET MⅤ ...

  7. ASP&period;NET WEB API 2 框架揭秘 读书笔记(一)

    第一章 概述 主要内容是介绍Web的基本概念,Restfull的基本概念及特性.最后介绍创建简单WebApi程序的步骤. Web的基本概念 IP/TCP协议簇分层,分为两种 链路层->网络层-& ...

  8. ASP&period;NET Web API 开篇示例介绍

    ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...

  9. ASP&period;NET Web API 自定义MediaType实现jsonp跨域调用

    代码来自<ASP.NET Web API 2 框架揭秘>一书. 直接上代码: /// <summary> /// 自定义jsonp MediaType /// </sum ...

随机推荐

  1. iOS导航栏的正确隐藏方式【转】

    简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如 ...

  2. Silverlight页面通过继承扩展实现

    在Silverlight中有些项目对UserControl重新做了封装基类,如PageBase,要求项目中每个页面都要从PageBase派生,但是过程比较坎坷,本文针对这个功能点的实现以及实现过程中遇 ...

  3. python之类定义

    <python基础教程>第7章说python中的类定义: 1. 要么声明__metaclass__=type 2. 要么继承object. 但是直接定义下类, 也没报错: >> ...

  4. Android4&period;0 -- UI控件之 Menu 菜单的的使用&lpar;一&rpar;

      这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...

  5. 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片

    本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...

  6. Jedis路由key的算法剥离

    在Redis集群中,会有很多个分片,如果此时利用Jedis来操作此Redis集群,那么他会把数据路由到不到的分片上.而且如果动态的往集群中增加分片,也不会影响Jedis的功能.究竟是怎么做到的呢? 由 ...

  7. WebService学习总结&lpar;一&rpar;——WebService的相关概念

    一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...

  8. java 线程(五)线程安全 Lock接口

    package cn.sasa.demo3; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...

  9. 大型运输行业实战&lowbar;day13&lowbar;1&lowbar;定时任务spring-quartz

    1.jar包 拷贝quartz-2.2.3.jar包到项目 2.编写定时任务类TicketQuart.java package com.day02.sation.task; import com.da ...

  10. Python中解码decode&lpar;&rpar;与编码encode&lpar;&rpar;与错误处理UnicodeDecodeError&colon; &&num;39&semi;gbk&&num;39&semi; codec can&&num;39&semi;t decode byte 0xab

    编码方法encoding() 描述 encode() 方法以指定的编码格式编码字符串,默认编码为 'utf-8'.将字符串由string类型变成bytes类型. 对应的解码方法:bytes decod ...