\\核心要点
\
- HTTP-RPC是一个开源的框架,用来在Java中构建REST服务; \
- 同一个代码库,可以服务于Web、移动和桌面客户端; \
- 默认提供了JSON响应数据; \
- 通过使用模板,支持基于HTML的资源表述; \
- 同时还可以生成XML、CSV等格式。
Web服务是一种实现应用逻辑的方式,能够通过HTTP进行远程访问。它们允许分布式的客户端与服务端的功能进行交互,这些客户端通常可能是异构的,服务还经常会用来为移动应用提供后端API。但是,它们在实现的时候,往往会采用与应用程序Web前端相独立的软件栈,这样的话,就会导致额外的开发和维护成本。\
模板是一种将数据与展现分离的方法。它们能够输出针对特定数据结构的格式,不过模板与数据本身是相互独立的,这样就为两者的责任画出了清晰的界限。在MVC术语中,模板代表了视图,而数据结构代表了模型。Web服务担任了控制器的角色,接受调用者的输入,生成模型数据并将模板用到模型上,从而产生最终的结果。\
使用HTTP-RPC框架实现的Web服务会有相应的输出,我们可以借助CTemplate系统(也叫作Mustache)所编写的模板将输出转换为HTML。这样的话,一个应用可以同时服务于Web和移动客户端,提升了同一个代码库的使用效率,显著降低总体的开发成本。\
HTTP-RPC
\HTTP-RPC是一个开源框架,用于简化基于REST的应用开发。它允许开发人员创建和访问基于HTTP的服务,在这个过程中采用了一种便利的、类似于RPC隐喻的做法,同时又保持了REST的基本原则,如无状态和统一资源访问。关于HTTP-RPC的更多信息,我之前的文章进行更为全面的介绍。\
HTTP-RPC服务要通过HTTP动作来进行访问,比如对目标资源的GET或POST请求。目标是通过路径来进行指定的,路径代表了资源的名称,通常会使用一个名词来组成URL,比如/calendar或/contacts。\
参数会通过查询字符串或类似于HTML表单那样的请求体的方式来提供。结果通常会返回JSON格式,当然不返回任何值的操作也是支持的。\
例如,如下的请求将会得到两个数字的和,这两个数字分别是通过a和b这两个查询参数指定的:
GET /math/sum?a=2\u0026amp;b=4\
服务将会在响应中返回6这个值。\
样例服务
\WebService类是一个用于HTTP-RPC Web服务的基础抽象类。我们定义服务操作的方式就是为某个具体的服务实现添加公开方法。\
@RPC注解用来标记某个方法可以进行远程访问。这个注解会为方法关联一个HTTP动作和资源路径。当服务发布之后,所有带有注解的公开方法将会自动允许远程执行。\
例如,如下的类可以用于实现我们前文所述的简单加法操作:
public class MathService extends WebService {\ @RPC(method=\"GET\