首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Atom/RSS feed 的应用 -4 为数据服务提供 REST 风格的 API

Atom/RSS feed 的应用 -4 为数据服务提供 REST 风格的 API

为数据服务提供 REST 风格的 APIZRM 是什么?ZRM 是 Zero 资源模型(Zero Resource Model)的缩写,它提供了一种创建 RESTful 资源的简便方法,你可以轻松创建出 REST 风格的数据服务。

为数据服务提供开放 API 可以方便第三方数据消费者使用数据服务,而使用 REST 风格构建 API 已经成为目前最为普遍的做法。以豆瓣网提供的开放 API 为例,它提供 REST 风格的 URI, 并且使用 Atom 1.0 作为数据格式,方便开发者编写程序访问豆瓣提供的各种数据服务。使用 sMash 你可以轻松地创建这样的开放 API。
我们使用 sMash ZRM 创建一个简单的联系人管理程序。在这个应用程序中,我们将为联系人数据提供 RESTful API。为了简化开发过程,推荐读者使用 WebSphere sMash 的开发工具 AppBuilder。
1. 打开 AppBuilder 创建 sMash 应用程序 contact.demo。
图 2. 使用 AppBuilder 创建应用程序 contact.demo2. 为联系人信息创建一个 Zero 资源模型 (ZRM),指定相关的列名称和数据类型。
图 3. 选择创建文件类型 ZRM model图 4. 创建 ZRM model /app/models/contact.json图 5. 使用 ZRM model 编辑器指定列名称和数据类型图 6. 创建 resource handler app/resources/contact.groovy3. 创建数据库和样例数据。
图 7. 切换到 Console 标签运行命令 zero model sync 创建数据库表图 8. 为样例数据创建 SQL 脚本 /init_data.sql图 9. 运行 SQL 脚本导入样例数据 : zero runsql init_data.sql这时候单击 AppBuilder 右上角的 “Start” 按钮启动 contact.demo 应用程序,在浏览器中打开地址 http://localhost:8080/resources/contact?format_as=atom 即可看到 feed 格式的联系人信息。
zero.resource 模块为以上 RESTful API 接口提供丰富的查询功能支持。如 http://localhost:8080/resources/contact?telephone_startswith=158&format_as=atom 将列出所有电话号码以 158 开始的联系人信息。
4. 为了保护数据服务的安全,你应该为开放的数据服务提供安全认证。这里可以利用 sMash 的安全特性方便的将 REST API 保护起来。 在 config/zero.config 中加入如下配置:
清单 9. 安全设置
1
2
3
4
5
6
7
8
9
10
@include "security/enableSecurity.config"
# secure contact API by basic authentication
@include "security/basicAuthentication.config" {
         "conditions": "/request/path =~ /resources/contact(/.*)?"
}
# only people in group “friends” can access contact API
@include "security/authorization.config" {
         "conditions": "/request/path =~ /resources/contact(/.*)?",
         "groups" : ["FRIENDS"]
}




这段配置信息为访问联系人的 REST API 提供 HTTP 基本身份验证,并且授权只有名为 FRIENDS 的群组成员可以访问。
返回列表