为了避免空洞的讲解,同时为了更好的展示 soapUI 对 REST 服务的测试功能,本文假想了一个在线书店 (http://www.example.com) 的例子。该在线书店对外提供了一些 REST 服务让第三方的应用程序调用。 为了让读者把注意力集中在使用 soapUI 进行测试上,我们对这些 REST 服务进行了必要的简化,仅仅只包含下面 3 种功能:书籍列表,书籍详情和添加评论。这 3 个 REST 服务覆盖了层次状的 REST 资源、基本的 HTTP 操作和多种展现形式。
服务名称 | HTTP 操作 | 资源 URI | 资源展现 | 注释 |
---|---|---|---|---|
书籍 列表 | GET | http://www.example.com/books | application/json,text/xml | 该 REST 服务的目的是列出在线书店中的书籍列表,参见 代码清单 1和 代码清单 2 |
书籍 详情 | GET | http://www.example.com/books/<book id > | application/json | 该 REST 服务目的是给定一个书籍 ID,返回该书籍的详细信息,参见代码清单 3,需要注意的是书籍详细信息是一个带有层次结构的 json 展示 |
添加 评论 | POST | http://www.example.com/books/<book id >/comments | 无 , 系统仅仅返回 200 OK | 该 REST 服务的目的是对一个书籍添加评论,调用方需要 POST 类似 author=xxx&content=xxx 的数据到服务器端。 |
清单 1. 书籍列表 application/json
{"books": [ {"book": { "id": "1234", "name": "book1", "price": 29 }}, {"book": { "id": "5678", "name": "book2", "price": 18 }} ]} |
清单 2. 书籍列表 text/xml
<bookes> <book> <id>1234</id> <name>book1</name> <price>29.0</price> </book> <book> <id>5678</id> <name>book2</name> <price>18</price> </book> </bookes> |
清单 3. 书籍详情 application/json
{ "id": "1234", "name": "book1", "description": "this is book 1", "author": "author1", "price": 29, "comments": [ {"comment": { "user": "user1", "content": "good book" }}, {"comment": { "user": "user2", "content": "not bad" }} ] } |