restful服务端及客户端开发文档格式.docx
《restful服务端及客户端开发文档格式.docx》由会员分享,可在线阅读,更多相关《restful服务端及客户端开发文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
importjavax.ws.rs.DefaultValue;
importjavax.ws.rs.FormParam;
importjavax.ws.rs.GET;
importjavax.ws.rs.POST;
importjavax.ws.rs.Path;
importjavax.ws.rs.PathParam;
importjavax.ws.rs.Produces;
importjavax.ws.rs.core.MediaType;
importnet.sf.json.JSONObject;
importcom.alibaba.fastjson.JSONArray;
/**
*
*@authorpavithra
*/
//这里@Path定义了类的层次路径。
//指定了资源类提供服务的URI路径。
@Path("
UserInfoService"
)
publicclassUserInfo{
//@GET表示方法会处理HTTPGET请求
@GET
//这里@Path定义了类的层次路径。
指定了资源类提供服务的URI路径。
@Path("
/name/{i}"
//@Produces定义了资源类方法会生成的媒体类型。
@Produces(MediaType.TEXT_XML)
//@PathParam向@Path定义的表达式注入URI参数值。
publicStringuserName(@PathParam("
i"
Stringi){
Stringname=i;
return"
<
User>
"
+"
Name>
+name+"
/Name>
/User>
;
}
/userinfo/{id}"
//@Produces定义了资源类方法会生成的媒体类型
//@Consumes(MediaType.APPLICATION_JSON)//传json
@Produces(MediaType.APPLICATION_JSON)
publicStringuserJson(@PathParam("
id"
Stringid){
//JSONObjectjobj=JSONObject.fromObject(id);
//id=jobj.getString("
);
{\"
name\"
:
\"
hanzl\"
\"
age\"
1,\"
id\"
+"
+id+"
}"
//多参数测试
@POST
/user2info"
//多参数配置
@Consumes({MediaType.MULTIPART_FORM_DATA,MediaType.APPLICATION_FORM_URLENCODED})
@Produces(MediaType.APPLICATION_JSON)//返回json
publicStringuser2Json(@FormParam("
)
Stringid,@FormParam("
name"
)Stringname){
System.out.println(id);
System.out.println(name);
+name+"
//多参数测试参数为json
/user3info"
publicStringuser3Json(@FormParam("
/age/{j}"
publicStringuserAge(@PathParam("
j"
intj){
intage=j;
Age>
+age+"
/Age>
}
3.配置服务端web.xml(restful接口发布地址)在web.xml中加入如下配置
servlet>
<
servlet-name>
JerseyRESTService<
/servlet-name>
servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
/servlet-class>
init-param>
param-name>
com.sun.jersey.config.property.packages
/param-name>
param-value>
com.eviac.blog.restws<
/param-value>
/init-param>
load-on-startup>
1<
/load-on-startup>
/servlet>
servlet-mapping>
url-pattern>
/rest/*<
/url-pattern>
/servlet-mapping>
4.编写客户端代码
4.1新建java工程
来进行服务端的第一次调用:
packagecom.eviac.blog.restclient;
importcom.sun.jersey.api.client.Client;
importcom.sun.jersey.api.client.ClientResponse;
importcom.sun.jersey.api.client.WebResource;
importcom.sun.jersey.api.client.config.ClientConfig;
importcom.sun.jersey.api.client.config.DefaultClientConfig;
publicclassUserInfoClient{
publicstaticfinalStringBASE_URI="
http:
//localhost:
8080/RestflService"
publicstaticfinalStringPATH_NAME="
/UserInfoService/name/"
publicstaticfinalStringPATH_AGE="
/UserInfoService/age/"
publicstaticvoidmain(String[]args){
Stringname="
Pavithra"
intage=25;
ClientConfigconfig=newDefaultClientConfig();
Clientclient=Client.create(config);
WebResourceresource=client.resource(BASE_URI);
WebResourcenameResource=resource.path("
rest"
).path(PATH_NAME+name);
System.out.println("
ClientResponse\n"
+getClientResponse(nameResource));
Response\n"
+getResponse(nameResource)+"
\n\n"
WebResourceageResource=resource.path("
).path(PATH_AGE+age);
+getClientResponse(ageResource));
+getResponse(ageResource));
/**
*返回客户端请求。
例如:
GET
*http:
8080/RESTfulWS/rest/UserInfoService/name/Pavithra
*返回请求结果状态“200OK”。
*@paramservice
*@return
privatestat