轻量级RESTful web service接口文档的编写规范文档

2008年与2009年期间,由于工作的原因,比较系统的学习了[url=jersey.dev.java.net]jersey[/url]这个REST框架,并且将其集成到我们的企业开发框架中,时到今日,公司已经完全放弃了原来的技术路线,这样一来,从jersey的研究从1.0.2.0以后,基本没有对后续的版本进行研究,不过,时常也关注一下它的发展动态,总的来说,jersey这个框架的发展还是相当缓慢的。

今天,我在jersey wiki上看到关于[url=http://wikis.sun.com/display/Jersey/WADL?focusedCommentId=243535461#comment-243535461]jersey的wadl[/url]相关内容,大致浏览了下,当然,大家都知道wadl是web service的接口描述文件,然而,想想我们以前那种基于json的接口描述文件,确实轻量了不少,我这里说“轻量”,主要是,很容易让人懂,wadl是基于xml的,很多人对于xml schema了解甚少,因此,通常初学者看到wadl都有一种生畏的感觉。

因此,我将我们两年前的REST接口文档拿了出来,这是我们当时的团队讨论的结晶,希望能给学习jersey或其他REST框架的同学们一点参考。

我们知道,基于REST的web service是以资源为中心的服务,因此,我们设计接口时,URI为接口进行定义,如,在用户管理系统中,对于角色的创建与获取,我们的接口为:

[i]URI:/sys/{sysCode}/role/[/i]

对于这个接口,我们有POST与GET两个动作,分别代表创建角色和获取角色,我们分别来看一下这两个动作对应的接口输入输出是什么样的数据格式:

[b](1) post[/b]

[b]描述:[/b]增加一个角色到某系统(如质量系统)
[b]Request message header:[/b]
Accept: application/json
Content-Type: application/json

[b]Request message body:[/b]
{
name:张三, //角色名称
desc:取样人员 //角色描述
}

[b]Response status:[/b]201
[b]Response message header:[/b]
Content-type: application/json
Content-Location:http://www.jlerp.com/sys/001/role/001
Response message body:
{
uid:001,
name: 张三,
initCaptial: 'zhangsan',
desc:取样人员 //角色描述
}


[b](2) get[/b]

[b]描述:[/b]获取所有角色
[b]Request message header:[/b]
Accept: application/json
Cache-Control: max-age=300

[b]Response status:[/b]200
[b]Response message header:[/b]
Content-type: application/json
Cache-Control: max-age=300

[b]Response message body:[/b]

{
roles:
[
{name:zhangsan,uid:001,initCaptial: 'zhangsan',desc:’’},
{name:zhangsan2,uid:002,initCaptial: 'zhangsan2',desc:’’},
{name:zhangsan3,uid:003,initCaptial: 'zhangsan3',desc:’’}
]
}


关于对角色的删除,我们定义的接口是这样的:

[i]URI:/sys/{sysCode}/role/deletebatch/[/i]

[b](1) post[/b]

[b]描述:[/b]从系统批量删除角色
[b]Request message header:[/b]
Accept: application/json
Content-Type: application/json

[b]Request message body:[/b]
{
Roles:[
{roleid:001},
{roleid:002}
]
}

[b]Response status:[/b]204
[b]Response message header:[/b]
Content-type: application/json

[b]Response message body:[/b]
{
role:{
name:'zhangsan',
uid:001,
initCaptial:'zhangsan1',
desc:’’
}
}


可能到这里,有人会跳出来说,REST强调URI里不能包含动词,所有的动词只有HTTP本身的那几个:POST、GET、DELETE、PUT、HEAD……,我这里URI设计里用了delete,是不是就违反了REST的理念呢?这个问题我改日重新起一个话题来探讨吧,请你关注我的博客哦:)

至于其他接口定义,我就不一一列举了,大家参考后面的附件。

欢迎提出各种宝贵意见!

[color=gray]如果您觉得本文对您有益,请点击博文后的google广告,对作者表示支持,谢谢![/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值