一个好的RESTfulAPI,应该具备以下特征:
这个API应该是对浏览器友好的,能够很好地融入Web,而不是与Web格格不入。
1浏览器是最常见和最通用的REST客户端。好的RESTfulAPI应该能够使用浏览器HTML完成所有的测试(不需要使用编程语言)。这样的API还可以很方便地使用各种自动化的Web功能测试、性能测试工具来做测试。Web前端应用(基于浏览器的RIA应用、移动App等等)也可以很方便地将多个RESTfulAPI的功能组合起来,建造Mashup类的应用。
这个API中所包含的资源和对于资源的 *** 作,应该是直观和容易理解的,并且符合>
REST开发又被称作“面向资源的开发”,这说明对于资源的抽象,是设计RESTfulAPI的核心内容。RESTfulAPI建模的过程与面向对象建模类似,是以名词为核心的。这些名词就是资源,任何可命名的抽象概念都可以定义为一个资源。而>
按照>
2如果发现资源上的 *** 作过多,以至于>
这个API应该是松耦合的。
RESTfulAPI的设计包括了三个循序渐进、由低到高的层次:资源抽象、统一接口、超文本驱动。正是这三个层次确保了RESTfulAPI的松耦合性。
3当设计面向互联网的API时,松耦合变成了一种“必须有”的强需求。紧耦合的API非常脆弱,一旦公布出去,服务器端和客户端都无法持续进化。尤其是服务器端,公布出去的接口根本不敢改,改了之后,几乎所有客户端应用立即无法正常工作。REST这种架构风格就是紧耦合API的解毒剂,这个话题可以谈的很深,这里就不展开了。感兴趣的读者可以参考《REST实战》。
这个API中所使用的表述格式应该是常见的通用格式
在RESTfulAPI中,对于资源的 *** 作,是通过在服务器端-客户端之间传递资源的表述来间接完成的。资源的表述可以有很多种格式,并且在响应和请求中的资源表述格式也会有所不同。GET/POST响应中的资源表述格式,常见的有HTML、XML、JSON;POST/PUT请求中的资源表述格式,常见的有标准的HTML表单参数、XML、JSON。
4这些常见表述格式,处理起来非常容易,有大量的框架和库提供支持。所以除非有很合理的要求,通常不需要使用自定义的私有格式。
使用>
>
5如果一个所谓的“RESTfulAPI”对于任何请求都返回200OK响应,在响应的消息体中返回出错情况信息,这种做法显然不符合“确保 *** 作语义的可见性”这个REST架构风格的基本要求。
这个API应该对于>
6充分利用好>
在Eclipse里,新建一个web工程
第一步,添加需要用的jar包,如下图
第二步,新建一个class,代码如下
第三步,修改webxml配置文件,如下图
启动tomcat, 访问本机测试地址:
这时我们就可以访问到我们发布的rest服务了,如下图
1、首先了解什么是 restful 架构?
rest :representational state transfer表现层状态转化
资源 :网络上的一个实体,或者说一个具体的信息。每种资源对应一个特定的URI,要获取这个资源,就是访问这个URI就可以
表现层 :representation 把资源呈现出来的形式,叫做表现层,在>需要在对象前声明 @ApiBodyObject
@POST
@Path("/addFavor/")
void addFavor(@QueryParam("linkId") String linkId, @ApiBodyObject User user,
@QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);
@ApiBodyObject 相当于 SpringMVC 的 @RequestBody
参数注解的作用就是将 xml/json (具体那种看配置,cxf 是json) 转换为实体对象如 User 传递给实现方法,如下:
@Override
@Transactional(readOnly = false)
public void addFavor(String linkId, User user, String favorTypeCode, String linkTable) {
}
当下常用的是RestFul风格的定义规范, 之前开发是清一色Get、Post。引入RestFul后感觉接口定义规范很多,看接口地址就知晓是什么功能, 一起来看看列的一些基础规范吧。
API与客户端用户的通信协议,总是使用>
如何用C++实现支持>
欢迎分享,转载请注明来源:内存溢出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)