RESTful多参数实现说明

GET

样例:/getRoleById/{id}/page/{start}/{end}

请求地址

http://127.0.0.1:8080/default/rest/services/RoleService/getRoleById/role1/page/1/6

@GET
@Path("/getRoleById/{id}/page/{start}/{end}")
public String  getRoleById(@PathParam("id")String id ,@PathParam("start")String start,@PathParam("end")String end)throws Throwable{
    // do somthing
}

POST

传递多个String(后台解析成需要的类型)

前台

表单头:

method.setRequestHeader("Content-type", "application/x-www-form-urlencoded");   

参数格式:key=value键值对,value可以为json字符串

role={"roleId":"role1","roleCode":"role1","roleName":"角色1","roleDesc":"测试","tenantId":"default"}&bean={"id":"id","start":123}&token=tre

注意:json字符串中name与value均需用双引号,value对应实体为int时不需要双引号,如"start":123

后台

使用Jackson直接将json字符串转成对应实体

@POST
@Path("/updateRole")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void updateRole(@FormParam("role") String role,@FormParam("bean") String bean,@FormParam("token") String token)throws Throwable{
    // 将json转成RoleQueryBean对象(RoleQueryBean为自定义对象,包含id和start两个属性)
    RoleQueryBean rolebean = new ObjectMapper().readValue(bean, RoleQueryBean.class);
    // 将持久化实体生成SDO代码之后生成对应实体
    DataObject cap = new ObjectMapper().readValue(role, CapRoleImpl.class);                 System.out.println(bean);
    System.out.println(cap);
    System.out.println(token);
}

注解说明

已使用

@PathParam,它用于将 @Path 中的模板变量映射到方法参数,模板变量支持使用正则表达式,变量名与正则表达式之间用分号分隔

@Path,标注资源类或方法的相对路径

@GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的类型

@Produces,标注返回的MIME媒体类型

@Consumes,标注可接受请求的MIME媒体类型

未使用

@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。

发表评论

电子邮件地址不会被公开。 必填项已用*标注