《RESTful Web APIs中文版》
《RESTful Web APIs中文版》
基本信息
原书名:RESTful Web APIs
原出版社: O'Reilly Media
作者: Leonard Richardson Mike Amundsen
译者: 赵震一 李哲
出版社:电子工业出版社
ISBN:9787121231155
上架时间:2014-6-11
出版日期:2014 年6月
开本:16开
页码:382
版次:1-1
所属分类:计算机 > 计算机网络 > Web Server > WebServer
更多关于》》》《RESTful Web APIs中文版》
编辑推荐
近年来,REST的流行导致了各种“RESTful”API的巨大增长,但是这些API却错失了很多架构的好处。通过这本实用指南,你将可以学习到如何设计可用的,并能随着时间不断进化的REST API。通过专注于跨多种领域的解决方案,本书向你展示了该如何使用那些为世界上最成功的分布式计算系统——万维网而设计的工具,从而来 创建强大且安全的应用。你将探索REST背后的概念,学习多种可用于创建基于超媒体API的策略,并在本书一步步的指导下整合你所学到的所有内容,从而去设计RESTful的web API。
√ 审查了包括集合模式和纯超媒体在内的API设计策略。
√ 理解如何将超媒体与表述整合进一个一致的API。
√ 探索XMDP和ALPS profile格式是如何帮助你应对web API的“语义挑战”的。
√ 学习近二十多种标准化的超媒体数据格式。
√ 应用在API实现中使用HTTP的最佳实践。
√ 使用JSON-LD标准及其他Linked Data方法来创建web API。
√ 理解在嵌入式系统使用REST的CoAP协议。
内容简介
书籍
计算机书籍
《restful web apis中文版》是针对restful api的实用指南,通过展示各种用来创建高可用应用的强大工具,讲解rest的深层原理,以及介绍基于超媒体api的策略,使读者得以在将上述内容融会贯通后,设计出让客户高度满意的restful的web api。《restful web apis中文版》极具权威性与前瞻性,既代表了api领域的最前沿趋势,也覆盖了api领域的最重要实践。
《restful web apis中文版》适合所有从事web开发和架构工作的读者阅读参考。
媒体评论
“这是一本了不起的书!《RESTful Web APIs》覆盖了当今API领域最重要的趋势和实践。”
——John Musser ProgrammableWeb创始人
作译者
Leonard Richardson, 《Ruby Cookbook》 (O’Reilly)一书的作者,曾 创建了包括Beautiful Soup在内 的多个开源代码库。Mike Amundsen 是包括《Building Hypermedia APIs with HTML5 and Node》(O’Reilly) 在内的十几本为人所称道的技术图书的作者。
Sam Ruby 是W3C HTML工作组的联合主席,同时也是IBM新 兴技术组的一名高级技术人员。
目录
《restful web apis中文版》
序 xix
前言 xxi
第1 章 网上冲浪 1
场景1 :广告牌 2
资源和表述 2
可寻址性 3
场景2 :主页 3
短会话(short session) 5
自描述消息(self-descriptive message) 5
场景3 :链接 6
标准方法 8
场景4 :表单和重定向 9
应用状态(application state) 11
资源状态(resource state) 12
连通性(connectedness) 13
与众不同的web 14
web api 落后于web 15
语义挑战 16
第2 章 一个简单的api 17
http get :安全的投注 18
如何读取http 响应 19
json 20
collection+json 21
向api 写入数据 23
http post: 资源是如何生成的 24
由约束带来解放 26
应用语义所产生的语义鸿沟 27
第3 章 资源和表述 29
万物皆可为资源 30
表述描述资源状态 30
往来穿梭的表述 31
资源有多重表述 32
http 协议语义(protocol semantics) 33
get 35
delete 36
幂等性(idempotence) 36
post-to-append 37
put 38
patch 39
link 和unlink 40
head 40
options 41
overloaded post 41
应该使用哪些方法? 42
第4 章 超媒体 45
将html 作为超媒体格式 46
uri 模板 49
uri vs url 50
link 报头 51
超媒体的作用 52
引导请求 52
对响应做出承诺 54
工作流控制 55
当心冒牌的超媒体! 56
语义挑战:我们该怎么做? 57
第5 章 领域特定设计 59
maze+xml :领域特定设计 60
maze+xml 是如何工作的 61
链接关系 62
访问链接来改变应用状态 64
迷宫集合 65
maze+xml 是api 吗? 67
客户端1 :游戏 68
maze+xml 服务器 72
客户端2 :地图生成器 74
客户端3 :吹牛者 76
客户端做自己想要做的事 77
对标准进行扩展 77
地图生成器的缺陷 80
修复(以及修复后的瑕疵) 81
迷宫的暗喻 83
解决语义鸿沟 83
领域特定设计在哪里? 83
最终的奖赏 84
报头中的超媒体 84
抄袭应用语义 84
如果找不到相关的领域特定设计,不要自己制造 86
api 客户端的种类 86
人类驱动的客户端 86
自动化客户端 87
第6 章 集合模式(collection pattern) 91
什么是集合? 93
链向子项的集合 93
collection+json 94
子项的表示 95
写入模板(write template) 98
搜索模板 99
一个(通用的)集合是如何工作的 100
get 101
post-to-append 101
put 和patch 101
delete 102
分页 102
搜索表单 103
atom 发布协议(atompub) 103
atompub 插件标准 105
为什么不是每个人都选择使用atompub ? 106
语义挑战:我们应该怎么做? 107
第7 章 纯- 超媒体设计 111
为什么是html? 111
html 的能力 112
超媒体控件 112
应用语义插件 113
微格式 115
hmaze 微格式 116
微数据 118
改变资源状态 119
为表单添加应用语义 121
与超媒体相对是普通媒体 125
html 的局限性 126
拯救者html5? 127
超文本应用语言 128
siren 131
语义挑战:我们现在要怎么做? 133
第8 章 profile 135
客户端如何找寻文档? 136
什么是profile ? 137
链接到profile 137
profile 链接关系 137
profile 媒体类型参数 138
特殊用途的超媒体控件 139
profile 对协议语义的描述 139
profile 对应用语义的描述 140
链接关系 141
不安全的链接关系 142
语义描述符 142
xmdp :首个机器可读的profile 格式 143
alps 146
alps 的优势 150
alps 并不是万金油 152
json-ld 153
内嵌的文档 156
总结 158
第9 章 api 设计流程 161
两个步骤的设计流程 161
七步骤设计流程 162
第1 步:罗列语义描述符 163
第2 步:画状态图 164
第3 步:调整命名 168
第4 步:选择一种媒体类型 172
第5 步:编写profile 173
第6 步:实现 174
第7 步:发布 174
实例:you type it, we post it 177
罗列语义描述符 177
画状态图 178
调整名称 179
选择一种媒体类型 180
编写profile 181
设计建议 182
资源是实现的内部细节 182
不要掉入集合陷阱 183
不要从表述格式着手 184
url 设计并不重要 184
标准名称优于自定义名称 186
设计媒体类型 187
当你的api 改变时 189
为现有api 添加超媒体 194
改进基于xml 的api 195
值不值得? 196
alice 的第二次探险 196
场景1 :没有意义的表述 196
场景2 :profile 198
alice 明白了 200
第10 章 超媒体动物园 203
领域特定格式 204
maze+xml 204
opensearch 205
问题细节文档 205
svg 206
voicexml 208
集合模式的格式 210
collection+json 211
atom 发布协议 211
odata 212
纯超媒体格式 219
html 219
hal 220
link 报头 222
location 和content-location 报头 222
url 列表 223
json 主文档(home documents) 223
link-template 报头 224
wadl 225
xlink 226
xforms 227
geojson :一个令人困惑的类型 228
geojson 没有通用的超媒体控件 230
geojson 没有媒体类型 232
从geojson 学习到的经验 233
语义动物园 234
链接关系的iana 注册表 234
微格式wiki 235
来自微格式wiki 的链接关系 236
第11 章 api 中的http 241
新http/1.1 规范 242
响应码 242
报头 243
表述选择 243
内容协商(content negotiation) 243
超媒体菜单 244
标准url(canonical url) 245
http 性能 246
缓存(caching) 246
条件get 请求(conditional get) 247
look-before-you-leap 请求 249
压缩 250
部分get 请求(partial get) 250
pipelining 251
避免更新丢失问题 252
认证 254
www-authenticate 报头和authorization 报头 255
basic 认证 255
oauth 1.0 256
oauth 1.0 的缺点 259
oauth 2.0 260
何时不采用oauth 261
http 扩展 261
patch 方法 262
link 和unlink 方法 262
webdav 263
http 2.0 264
第12 章 资源描述和linked data 267
rdf 268
rdf 将url 作为uri 对待 270
什么时候使用描述策略 271
资源类型 273
rdf schema 274
linked data 运动 277
json-ld 278
将json-ld 作为一种表述格式 279
hydra 280
xrd 家族 285
xrd 和jrd 285
web 主机元数据文档 286
webfinger 287
本体动物园(ontology zoo) 289
schema.org rdf 289
foaf 290
vocab.org 290
总结:描述策略生机盎然! 290
第13 章 coap: 嵌入式系统的rest 293
coap 请求 294
coap 响应 294
消息种类 295
延迟响应(delayed response) 296
多播消息(multicast message) 296
core link format 297
结论:非http 协议的rest 298
附录a 状态法典 301
附录b http 报头法典 325
附录c 为api 设计者准备的fielding 论文导读 349
词汇表 365
《RESTful Web APIs中文版》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派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 安装并启动 ...
随机推荐
- Taints和Tolerations联用,将pod部署到k8s的master节点
一般,k8s的master为了保持高性能,在这个主节点上只运行一些管理必须的POD. 如果我们限于资源,或是一些监控类的pod要部署到master节点呢? 昨天遇到这个问题,按网上通用的方法,未解决, ...
- [转] impress.js学习
引子 断断续续用了好几天,终于把 impress.js 源码看完,作为刚入门的前端菜鸟,这是我第一次看 js 源码,最初还是比较痛苦的.不过还好,impress.js源码的注释相当清楚,每个函数和事件 ...
- 解决 Delphi XE5 写Android程序的No resource identifier found for attribute... 错误【转】
原文:http://www.hxhlb.cn/article/32142aaeb67bbc05379369c3.html 那一天,我装上了RAD Studio XE5. 当天晚上,我就写了一个小小的A ...
- Linux性能优化之磁盘优化(三)
前言 关于本章内容,设计的东西比较多.这里会有关于文件系统.磁盘.CPU等方面的知识,以及涉及到关于这方面的性能排查等. 术语 文件系统通过缓存和缓冲以及异步I/O等手段来缓和磁盘的延时对应用程序的影 ...
- Could not resolve com.android.support:appcompat-v7:28.0.0 错误处理
20181008 总是出现错误 Could not resolve com.android.support:appcompat-v7:28.0.0 1.先是怀疑前些天降级了jdk 1.8 ,所以重 ...
- linux timer operate
1.gettimeofday() ----> http://www.linuxidc.com/Linux/2012-06/61903.htm (一般)
- Python学习——Python 容器(列表,元组,字典,集合)
列表: 列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时.与字符串不同,列表是可变的. 你可以直接对原始列表进行修改:添加新元素.删除或覆盖已有元素.在列表中,具有相同值 ...
- 每日踩坑 2018-11-26 MVC Razor ActionLink 生成的URL中多生成了一个参数 ?length=n
RouteConfig 的路由注册如下: routes.MapRoute( name: "Default", url: "{controller}/{action}&qu ...
- POJ 1151Atlantis 矩形面积并[线段树 离散化 扫描线]
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21734 Accepted: 8179 Descrip ...
- [CC-FNCS]Chef and Churu
[CC-FNCS]Chef and Churu 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A_{1\sim n}\),另有\(n\)个函数,第\(i\)个函数会返回数组中标号在\( ...