1.安卓app客户端与后台的接口一般有两种:@POST与@GET
@POST
@Path("/updateuserdetail/")
@Consumes("application/x-www-form-urlencoded;encoding=utf-8")
@Override
public AppBean updateuserdetail(@FormParam("username") String username,
@FormParam("password") String password,
@FormParam("occupation") String occupation,
@FormParam("income") String income,
@FormParam("email") String email,
@FormParam("phonenum") String phonenum,
@FormParam("married") String married) {}
------------------------------------------------------------------------------------------
@GET
@Path("/goodsListByType/{pageno}/{type}")
@Override
public AppBean getGoodsList(@PathParam("pageno") String pageno,
@PathParam("type") String type){}
-------------------------------------------------------------------------------------------
@POST接口可以通过地址栏直接获取测试:
例如上面这个接口,地址栏直接输入:
http://localhost:端口号/项目名称/api/api/goodsListByType/pageno/type/
第一个api是Struts.xml配置的
(<constant name="struts.action.excludePattern" value="/api/.*" />),
后一个是applicationContext.xml配置的
<jaxrs:server address="/api">
<jaxrs:serviceBeans>
<ref bean="appService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
但是@GET方法是不能直接在路径中区获取的,要借用外部工具或自己写一个测试类,当然我选择了前者,网上百度找到了大神们说的postman谷歌浏览器插件,自己摸索着去测试,再也不担心接口调试了。
get界面如下:
post界面如下:
2016-01-13:最近做的数据采集的项目要用到json数据批量入库的需求,今天后台基本完成,把这次的json的后台接口在这里补充下,也让自己回顾下这几天的学习过程,我还是小白,要学的还很多。。。
首先这次接口接收到的是json数据。
什么是json数据:
[
{
"action_time": "Jan 12, 2016 9:39:32 AM",
"imei": "867676026061019",
"imei_md5": "effbda25da3fcf80c4b9df019bb61589",
"sdk_id": "T000",
"ssaid": "2679251adb4bfb97",
"ssaid_md5": "4f5ac5cc969ac09d083ca02037b18579",
"sys_model": "H60-L01",
"sys_ram": "2.94GB",
"sys_screen_size": "1080:1776",
"sys_version": "4.4.2"
}
]
注释:json数据中可包含多个[],一个[]对应一个对象,{}里面的就是对象的元素,冒号前面的为对象属性,后面为这个属性的值。
相比之前的那些传参数的接口要快好多,也方便好多,以后像这种批量入库的都可以用json数据格式来传参。废话不多说看接口:(不同之处自己比较下就知道了)
@POST
@Path("/creatNet_type/")
//这里注意下数据格式,测试的时候用 application/json
@Consumes("application/x-www-form-urlencoded;encoding=utf-8")
public AppBean creatNet_type(@Formpath String json) { //这里注意参数 String类型
//这里json数据不能直接使用
JSONArray ja = new JSONArray(json);
List<Object> objectList = new ArrayList<Object>();
//循环json对象
for (int i = 0; i < ja.length(); i++) {
Object object = new Object ();
//获取json对象里的“element”元素的数据set给对象响应的属性
object .setElement(ja.getJSONObject(i).getString("element"));
//将对象添加到数组中
objectList .add(object);
}
//循环入库
for (int i = 0; i < nettypeList.size(); i++) {
Object obj = objectList .get(i);
objectService.create(obj);//封装的入库方法
}
}
对应的postman界面