restful服务端及客户端开发.docx

上传人:b****2 文档编号:2141636 上传时间:2022-10-27 格式:DOCX 页数:19 大小:217.33KB
下载 相关 举报
restful服务端及客户端开发.docx_第1页
第1页 / 共19页
restful服务端及客户端开发.docx_第2页
第2页 / 共19页
restful服务端及客户端开发.docx_第3页
第3页 / 共19页
restful服务端及客户端开发.docx_第4页
第4页 / 共19页
restful服务端及客户端开发.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

restful服务端及客户端开发.docx

《restful服务端及客户端开发.docx》由会员分享,可在线阅读,更多相关《restful服务端及客户端开发.docx(19页珍藏版)》请在冰豆网上搜索。

restful服务端及客户端开发.docx

restful服务端及客户端开发

Restful服务端及客户端调用实例

1.新建web工程作为服务端创建服务端代码

前情提示:

GET(SELECT):

从服务器取出资源(一项或多项)。

POST(CREATE):

在服务器新建一个资源。

PUT(UPDATE):

在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):

在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):

从服务器删除资源。

2.服务端代码(每个方法前有注释,包括单参数,多参数,post,get方式的例子)

packagecom.eviac.blog.restws;

importjavax.ws.rs.Consumes;

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""+""+name+""+"";

}

@GET

//这里@Path定义了类的层次路径。

指定了资源类提供服务的URI路径。

@Path("/userinfo/{id}")

//@Produces定义了资源类方法会生成的媒体类型

//@Consumes(MediaType.APPLICATION_JSON)//传json

@Produces(MediaType.APPLICATION_JSON)

//@PathParam向@Path定义的表达式注入URI参数值。

publicStringuserJson(@PathParam("id")

Stringid){

//JSONObjectjobj=JSONObject.fromObject(id);

//id=jobj.getString("id");

return"{\"name\":

\"hanzl\",\"age\":

1,\"id\":

"+"\""+id+"\"}";

}

//多参数测试

@POST

//这里@Path定义了类的层次路径。

指定了资源类提供服务的URI路径。

@Path("/user2info")

//@Produces定义了资源类方法会生成的媒体类型

//@Consumes(MediaType.APPLICATION_JSON)//传json

//多参数配置

@Consumes({MediaType.MULTIPART_FORM_DATA,MediaType.APPLICATION_FORM_URLENCODED})

@Produces(MediaType.APPLICATION_JSON)//返回json

//@PathParam向@Path定义的表达式注入URI参数值。

publicStringuser2Json(@FormParam("id")

Stringid,@FormParam("name")Stringname){

System.out.println(id);

System.out.println(name);

return"{\"name\":

"+"\""+name+"\""+",\"age\":

1,\"id\":

"+"\""+id+"\"}";

}

//多参数测试参数为json

@POST

//这里@Path定义了类的层次路径。

指定了资源类提供服务的URI路径。

@Path("/user3info")

//@Produces定义了资源类方法会生成的媒体类型

//@Consumes(MediaType.APPLICATION_JSON)//传json

//多参数配置

@Consumes({MediaType.MULTIPART_FORM_DATA,MediaType.APPLICATION_FORM_URLENCODED})

@Produces(MediaType.APPLICATION_JSON)//返回json

//@PathParam向@Path定义的表达式注入URI参数值。

publicStringuser3Json(@FormParam("id")

Stringid){

System.out.println(id);

return"{\"name\":

\"hanzl\",\"age\":

1,\"id\":

"+"\""+id+"\"}";

}

@GET

@Path("/age/{j}")

@Produces(MediaType.TEXT_XML)

publicStringuserAge(@PathParam("j")

intj){

intage=j;

return""+""+age+""+"";

}

}

3.配置服务端web.xml(restful接口发布地址)在web.xml中加入如下配置

JerseyRESTService

com.sun.jersey.spi.container.servlet.ServletContainer

com.sun.jersey.config.property.packages

com.eviac.blog.restws

1

JerseyRESTService

/rest/*

4.编写客户端代码

4.1新建java工程

来进行服务端的第一次调用:

packagecom.eviac.blog.restclient;

importjavax.ws.rs.core.MediaType;

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;

/**

*

*@authorpavithra

*

*/

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));

System.out.println("Response\n"+getResponse(nameResource)+"\n\n");

WebResourceageResource=resource.path("rest").path(PATH_AGE+age);

System.out.println("ClientResponse\n"

+getClientResponse(ageResource));

System.out.println("Response\n"+getResponse(ageResource));

}

/**

*返回客户端请求。

例如:

GET

*http:

//localhost:

8080/RESTfulWS/rest/UserInfoService/name/Pavithra

*返回请求结果状态“200OK”。

*

*@paramservice

*@return

*/

privatestat

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1