RestEasy传值方式

一、@pathparam

   @PathParam 是一个参数注解,可以将一个 URL 上的参数映射到方法的参数上,它可以映射到方法参数的类型有基本类型、字符串、或者任何有一个字符串作为构造方法参数的 Java 对象、或者一个有字符串作为参数的静态方法 valueOf 的 Java 对象(一般是从Get的url中获取参数值)。

@GET
@Path("delProByPNumber/{param}")
@Produces("application/json; charset=utf-8")
public Response delPro(<strong>@PathParam("param") String pNumber</strong>){
session.delete("production.delete", pNumber);
session.commit();
List list=queryAllPro();
return Response.status(201).entity(list).build();
}

访问路径:http://localhost:8888/Invoice/optPro/delProByPNumber/7

 @pathparem中,URL中只出现参数的值,不出现键值对,比如: “/users/2011/06/30” 

@GET
@Path("{year}/{month}/{day}")
public Response getUserHistory(
@PathParam("year") int year,
@PathParam("month") int month,
@PathParam("day") int day) {
String date = year + "/" + month + "/" + day;
return Response.status(200) .entity("getUserHistory is called, year/month/day : " + date) .build();
}

另外:{var}代表只能有一个路径名,如:a;而{var:.*}代表可以是任意多个路径名,如:a/b/c

/**
* {var:.*}代表可以是任意多个路径名,如:a/b/c
*/
@Path("/pathRegular1/{var:.*}/{msg}")
@GET
public String pathRegular1(@PathParam("msg") String m){
return m;
} /**
* {var}代表只能有一个路径名,如:a
*/
@Path("/pathRegular1/{var}/{msg}")
@GET
public String pathRegular2(@PathParam("msg") String m){
return m;
}

二、@queryParam

@queryParam从/XXX/路径/?num=5中获取参数

@GET
@Path("addAcc/parameters")
@Produces("application/json; charset=utf-8")
public Response addCus(
@QueryParam("accname") String accname,
@QueryParam("balance") long balance,
@QueryParam("department") String department,
) {
Account account=new Account();
account.setAccname(accname);
account.setBalance(balance);
return Response.status(201).entity(queryOne(accname)).build();
}

访问路径:http://localhost:8888/Invoice/optAcc/addAcc/parameters?accname=rr&balance=99999&department=hedaparameters后面为传入参数

Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from,
@QueryParam("to") int to,
@QueryParam("orderBy") List<String> orderBy) {
return Response.status(200).entity("getUsers is called, from : " + from + ", to : " + to + ", orderBy" + orderBy.toString()).build();
}

URL输入为:users/query?from=100&to=200&orderBy=age&orderBy=name 此时,输出为: getUsers is called, from : 100, to : 200, orderBy[age, name]。

注意:跟@pathparam不同,@queryparam中,指定的是URL中的参数是以键值对的形式出现的,而在程序中 @QueryParam("from") int from则读出URL中from的值

三、@FormParam

将表单中的字段映射到方法调用上,对于此类方式一般提交方式为Post。

例如,对于下面的表单:

<form method="POST" action="/resources/service">
First name:
<input type="text" name="firstname">
<br>
Last name:
<input type="text" name="lastname">
</form>

通过 post 方法提交,处理该请求的方法为:

Path("/")
public class NameRegistry {
@Path("/resources/service")
@POST
public void addName(@FormParam("firstname") String first, @FormParam("lastname") String last) {...}
}

访问路径:http://localhost:8888/resources/services/hello/getName

也可以添加application/x-www-form-urlencoded来反序列化 URL 中的多参数:

@Path("/")
public class NameRegistry {
@Path("/resources/service")
@POST
@Consumes("application/x-www-form-urlencoded")
public void addName(@FormParam("firstname") String first, MultivaluedMap<String, String> form) {...}
}

参见:http://blog.csdn.net/programmeryu/article/details/50536024

http://ju.outofmemory.cn/entry/144017

http://www.cnphp6.com/archives/29400

上一篇:css 为元素选择器,css目标状态伪类,结构化选择器,多媒体选择器,清除表默认样式、属性选择器


下一篇:在Linux环境下使用Jexus部署ASP.NET Core