6、API开发指南
首先值得说明的是,上述所说的API和正常的struts2 Action没有丝毫区别。只不过访问路径必须是在/api/下,这个目径下不会被模板机制拦截,可以正常的由struts2响应。
6-1、示例
同样是要继承com.enation.framework.action.WWAction如:
@Component
@Scope("prototype")
@ParentPackage("eop_default")
@Namespace("/api/wine")
@Action("test")
public class TestApiAction extends WWAction {
public String delete(){
this.showSuccessJson("成功啦");
returnthis.JSON_MESSAGE;
}
}
其中的注解:
@Component同样是让spring自动扫描为spring bean。
@Scope("prototype")生命bean的生命周期为prototype,这是为了多线程时的数据安全。
@Namespace("/api/wine")是这个是根据你的项目需要定义的namespace,这个决定了你的api访问路径
@Action("test")定义这个action的访问路径。
像上述示例的api,需要通过如下地址访问:/api/wine/test!delete.do这样就会调用delete方法,这个api的返回结果会是:
{"result":1,"message":"成功啦"}
返回的json串的规范对于我们意义重大,我们规定:
1、json串中必须含有结果值,我们规定用result来表示,1表示成功,0表示失败
2、json串的名称部分必须用双引号,字串值也必须用双引号(否则jquery1.4以后的版本不支持)
javashop提供了常用方法帮助大家生成json串,这些方法有:
基类WWAction中的方法:
1、showSuccessJson返回成功结果的字串,如:
this.showSuccessJson("成功啦");
返回:
{"result":1,"message":"成功啦"}
2、showErrorJson返回失败的字串,如:
this.showErrorJson("出错啦");
返回:
{"result":0,"message":"出错啦"}
如果我们需要返回更复杂的json串时该怎么办呢?
实际上我们是通过为WWAction基类的json属性赋值来实现向客户端返回字串的,比如调用this.showSuccessJson("成功啦");实际是做了如下操作this.json=”{\"result\":1,\"message\":\"成功啦\"}”
如果需要返回更复杂的json串,那么构造好字串并赋值给json属性就可以了。
Javashop提供了com.enation.framework.util.JsonMessageUtil工具类来帮助生成json串,具体请参考此类。
小提示
1.javashop为以下包名设置了struts的注解扫描: com.enation.app.base.core.action com.enation.app.shop.core.action com.enation.app.cms.core.action 如果在你的项目中需要扫描其它包名,请在struts配置文件中通过如下代码配置: