1、restful服务端及客户端开发Restful服务端及客户端调用实例1.新建web工程作为服务端 创建服务端代码前情提示:GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。DELETE(DELETE):从服务器删除资源。2.服务端代码(每个方法前有注释,包括单参数,多参数,post,get方式的例子)package com.eviac.blog.restws; import javax.ws.rs.C
2、onsumes;import javax.ws.rs.DefaultValue;import javax.ws.rs.FormParam;import javax.ws.rs.GET; import javax.ws.rs.POST;import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import net.sf.json.JSONObject;import com.alibaba.fastjson.JSONAr
3、ray;/* * * author pavithra * */ / 这里Path定义了类的层次路径。 / 指定了资源类提供服务的URI路径。 Path(UserInfoService) public class UserInfo / GET表示方法会处理HTTP GET请求 GET / 这里Path定义了类的层次路径。指定了资源类提供服务的URI路径。 Path(/name/i) / Produces定义了资源类方法会生成的媒体类型。 Produces(MediaType.TEXT_XML) / PathParam向Path定义的表达式注入URI参数值。 public String userN
4、ame(PathParam(i) String i) String name = i; return + + name + + ; GET / 这里Path定义了类的层次路径。指定了资源类提供服务的URI路径。 Path(/userinfo/id) / Produces定义了资源类方法会生成的媒体类型 /Consumes(MediaType.APPLICATION_JSON) /传json Produces(MediaType.APPLICATION_JSON) / PathParam向Path定义的表达式注入URI参数值。 public String userJson(PathParam(i
5、d) String id) /JSONObject jobj=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,M
6、ediaType.APPLICATION_FORM_URLENCODED) Produces(MediaType.APPLICATION_JSON) /返回json / PathParam向Path定义的表达式注入URI参数值。 public String user2Json(FormParam(id) String id,FormParam(name) String name) System.out.println(id); System.out.println(name); return name:+name+,age:1,id:+id+; /多参数测试 参数为json POST / 这里
7、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参数值。 public String us
8、er3Json(FormParam(id) String id) System.out.println(id); return name:hanzl,age:1,id:+id+; GET Path(/age/j) Produces(MediaType.TEXT_XML) public String userAge(PathParam(j) int j) int age = j; return + + age + + ; 3.配置服务端web.xml(restful接口发布地址)在web.xml中加入如下配置 Jersey REST Service com.sun.jersey.spi.cont
9、ainer.servlet.ServletContainer com.sun.jersey.config.property.packages com.eviac.blog.restws 1 Jersey REST Service /rest/* 4.编写客户端代码4.1新建java工程来进行服务端的第一次调用:package com.eviac.blog.restclient; import javax.ws.rs.core.MediaType; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.
10、ClientResponse; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; /* * * author pavithra * */ public class UserInfoClient public static final String BASE_URI = http:/localhost:8080/RestflSe
11、rvice; public static final String PATH_NAME = /UserInfoService/name/; public static final String PATH_AGE = /UserInfoService/age/; public static void main(String args) String name = Pavithra; int age = 25; ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); WebRes
12、ource resource = client.resource(BASE_URI); WebResource nameResource = resource.path(rest).path(PATH_NAME + name); System.out.println(Client Response n + getClientResponse(nameResource); System.out.println(Response n + getResponse(nameResource) + nn); WebResource ageResource = resource.path(rest).pa
13、th(PATH_AGE + age); System.out.println(Client Response n + getClientResponse(ageResource); System.out.println(Response n + getResponse(ageResource); /* * 返回客户端请求。 例如: GET * http:/localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra * 返回请求结果状态“200 OK”。 * * param service * return */ private stat
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1