《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中文版》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Taints和Tolerations联用,将pod部署到k8s的master节点

    一般,k8s的master为了保持高性能,在这个主节点上只运行一些管理必须的POD. 如果我们限于资源,或是一些监控类的pod要部署到master节点呢? 昨天遇到这个问题,按网上通用的方法,未解决, ...

  2. [转] impress.js学习

    引子 断断续续用了好几天,终于把 impress.js 源码看完,作为刚入门的前端菜鸟,这是我第一次看 js 源码,最初还是比较痛苦的.不过还好,impress.js源码的注释相当清楚,每个函数和事件 ...

  3. 解决 Delphi XE5 写Android程序的No resource identifier found for attribute... 错误【转】

    原文:http://www.hxhlb.cn/article/32142aaeb67bbc05379369c3.html 那一天,我装上了RAD Studio XE5. 当天晚上,我就写了一个小小的A ...

  4. Linux性能优化之磁盘优化(三)

    前言 关于本章内容,设计的东西比较多.这里会有关于文件系统.磁盘.CPU等方面的知识,以及涉及到关于这方面的性能排查等. 术语 文件系统通过缓存和缓冲以及异步I/O等手段来缓和磁盘的延时对应用程序的影 ...

  5. 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 ,所以重 ...

  6. linux timer operate

    1.gettimeofday()    ---->   http://www.linuxidc.com/Linux/2012-06/61903.htm   (一般)

  7. Python学习——Python 容器(列表,元组,字典,集合)

    列表: 列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时.与字符串不同,列表是可变的. 你可以直接对原始列表进行修改:添加新元素.删除或覆盖已有元素.在列表中,具有相同值 ...

  8. 每日踩坑 2018-11-26 MVC Razor ActionLink 生成的URL中多生成了一个参数 ?length=n

    RouteConfig 的路由注册如下: routes.MapRoute( name: "Default", url: "{controller}/{action}&qu ...

  9. POJ 1151Atlantis 矩形面积并[线段树 离散化 扫描线]

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21734   Accepted: 8179 Descrip ...

  10. [CC-FNCS]Chef and Churu

    [CC-FNCS]Chef and Churu 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A_{1\sim n}\),另有\(n\)个函数,第\(i\)个函数会返回数组中标号在\( ...