《ASP.NET Web API 2框架揭秘》
《ASP.NET Web API 2框架揭秘》
基本信息
作者: 蒋金楠
出版社:电子工业出版社
ISBN:9787121235368
上架时间:2014-7-5
出版日期:2014 年7月
开本:16开
页码:732
版次:1-1
所属分类:计算机 > 软件与程序设计 > .NET > ASP.NET
更多关于》》》 《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框架揭秘》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Android Studio 3.0正式版填坑之路
原文:https://www.jianshu.com/p/9b25087a5d7d Android Studio 3.0启动图 序言 总看别人的文章,今天尝试着自己来写一篇.在逛论坛时候,无意间发 ...
- 项目管理工具Maven的安装与使用
一.Maven的简介 1. 什么是maven 是Apache下的一个开源的项目,是纯java编写,并且只是用来管理java项目. 2. Maven的好处 maven项目管理jar节省磁盘空间 一键构建 ...
- windows10系统定时1分钟执行php(不借助windows的.bat文件)原创
第一步:确认windows上是否配置好了php环境变量,我用xampp安装的lamp环境,默认已经配置好了php的环境变量.在CMD中执行php -v 显示相应的php版本 php -v 如果显示上 ...
- 【AtCoder】ARC091
C - Flip,Flip, and Flip...... 只有一个这一个是反面 只有一行那么除了两边以外都是反面 否则输出\((N - 2)*(M - 2)\) #include <bits/ ...
- 多线程学习笔记四之Condition实现分析
目录 简介 等待队列 nextWaiter 源码分析 await() signal() signalAll() 总结 简介 在使用内置锁synchronized时,通过调用java.lang.Ob ...
- iOS 11开发教程(十四)iOS11应用代码添加视图
iOS 11开发教程(十四)iOS11应用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. (1)实例化视图对 ...
- python3 开发面试题(collections中的Counter)6.7
''' 编写Python脚本,分析xx.log文件,按域名统计访问次数 xx.log文件内容如下: https://www.sogo.com/ale.html https://www.qq.com/3 ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...
- BZOJ4227 : 城市
首先一遍Dijkstra求出S到每个点的最短路,并建出最短路图. 那么对于一条边,求在这条边不能使用的情况下,到首都S的最短时间会变长的点的数目,等价于求去掉这条边后在最短路图中不能从S出发到达的点的 ...
- Delphi 资源管理器套件
需要个类似资源管理器的东西, 首先试了下 TDriveComboBox.TDirectoryListBox.TFileListBox, 嘿! Win31 时代的东西, 不是一般地丑. 试了下 Vcl. ...