46、RESTful 服务相关技术与资源全解析

RESTful 服务相关技术与资源全解析

1. REST 开发框架与技术方向

Django 不仅仅是一个处理 HTTP 请求的框架,它和 Rails 类似,包含许多处理 Web 应用和 Web 服务设计中常见问题的子库。例如,它有类似 Rails 的 ActiveRecord 的对象关系映射器、内置的用户模型,还能将模型对象序列化为 JSON 表示。此外,Django 还有评论模型和生成联合供稿的工具,是 Python 实现 RESTful Web 服务的优秀基础。

在技术方向上,标签视图等有趣的功能会遵循类似的模式。通过一些工作,BookmarkDetail 类可以重构为一个更通用的资源类,用于处理多种不同类型的对象。

2. REST 相关标准与指南

2.1 HTTP 和 URI 标准

2.2 RESTful 架构资源

2.3 超媒体格式标准

2.4 RESTful 开发框架

框架名称 特点 相关参考
Ruby on Rails 易于暴露 RESTful 资源 http://rubyonrails.org/ ,《Agile Web Development with Rails》第二版
Restlet 框架(Java) 可建模任何 RESTful 架构 http://www.restlet.org/ ,JSR 311 正在开发中
Django(Python) 是 Python 实现 RESTful Web 服务的优秀基础 http://www.djangoproject.com/ ,免费的 Django 书籍正在开发中

2.5 REST 相关博客

3. 可使用的 RESTful 服务

3.1 服务目录

  • ProgrammableWeb http://programmableweb.com/ ,最流行的 Web 服务目录,跟踪可编程 Web 的 API 和混搭应用,但术语不够精确。
  • servicereg.com http://www.servicereg.com/ ,注册的服务较少,但有潜力,它不仅是目录,还是一个 Web 服务,其 Web 服务列表以支持 Atom 发布协议的“集合”资源形式暴露。
  • MicroApps http://microapps.org/ ,专注于可作为其他应用组件的 RESTful 应用,如 Amazon S3。

3.2 只读服务

以下是这些只读服务的简单流程图:

graph LR
    A[客户端] --> B[irrepressible.info]
    A --> C[Audioscrobbler]
    A --> D[Coral Content Distribution Network]

3.3 读写服务

3.3.1 基于 Atom 发布协议的服务

服务名称 服务描述 相关链接
Google 相关服务 许多 Google 网站暴露了名为 GData 的 APP 扩展,如 Blogger、Google Calendar、Google Notebook 等 http://code.google.com/apis/gdata/
Ning 应用 Ning 上托管的应用暴露了 APP,详情见 http://documentation.ning.com/sections/rest.php
43 Things 将生活目标列表作为 APP 集合暴露,同时也有 REST - RPC 混合服务 http://www.43things.com/about/view/web_service_methods_atom
Blogmarks 类似 del.icio.us 的社交书签服务,将书签列表作为 APP 集合暴露 http://dev.blogmarks.net/wiki/DeveloperDocs
Lotus Connections 和 Lotus Quick 暴露响应 APP 的资源

3.3.2 自定义 RESTful 资源服务

以下是部分自定义 RESTful 资源服务的交互流程图:

graph LR
    A[客户端] --> B[Amazon S3]
    A --> C[Amazon Simple Queue Service]
    A --> D[BlinkSale API]
    A --> E[Stikkit API]

4. HTTP 响应代码解析

4.1 响应代码的重要性

在人类 Web 中,很多应用在出现错误时仍发送 200(“OK”)响应代码,错误信息通过 HTML 实体主体描述,用户通过阅读文档来理解。但在可编程 Web 中,计算机程序无法仅通过查看文档可靠地理解其含义,HTTP 响应代码变得非常重要,它能告诉客户端如何处理实体主体中的文档,或在无法理解文档时该怎么做。客户端或中间代理(如防火墙)只需查看响应的前三个字节就能了解 HTTP 请求的情况。

4.2 标准响应代码概述

HTTP 标准有 41 个官方响应代码,WebDAV 等扩展还增加了更多代码。很多代码很少使用,部分代码区分度小,对于习惯人类 Web 的人来说可能会感到困惑。这里涵盖了 HTTP 标准的 41 个代码,以及 WebDAV 扩展的 207(“Multi - Status”)代码。

4.3 最少使用的响应代码

如果不想使用过多响应代码,使用以下三个代码仍可传达客户端处理响应所需的基本信息:
- 200(“OK”) :一切正常,实体主体中的文档(如果有)是某个资源的表示。
- 400(“Bad Request”) :客户端存在问题,实体主体中的文档(如果有)是错误消息,希望客户端能理解并解决问题。
- 500(“Internal Server Error”) :服务器存在问题,实体主体中的文档(如果有)是错误消息,但客户端无法解决服务器问题。

此外,还有四个在 Web 服务中特别常见的错误代码:
- 301(“Moved Permanently”) :当客户端触发导致资源 URI 更改的操作时发送,或者客户端请求旧 URI 时也会发送。

以下是这些最少使用响应代码的简单说明表格:
| 响应代码 | 含义 | 实体主体文档情况 |
| ---- | ---- | ---- |
| 200 | 一切正常 | 可能是资源表示 |
| 400 | 客户端问题 | 可能是错误消息 |
| 500 | 服务器问题 | 可能是错误消息 |
| 301 | 资源 URI 永久更改 | |

综上所述,RESTful 服务涉及众多开发框架、标准、资源和响应代码等方面的知识。了解这些内容有助于开发者更好地构建和使用 RESTful Web 服务,在可编程 Web 领域发挥更大的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值