从ajax前端调用REST WS时,我有一个基本的疑问。我从ajax调用WS作为:
url: self.GET_GOAL_VIEW_URL + '?userEmail=' + eMail,
或作为:
url: self.GET_GOAL_VIEW_URL,
现在在显式传递userEmail参数的情况下,我需要在后端服务代码中使用userEmail,但如果在调用中没有userEmail,我需要使用另一个名为userId的参数,该参数正被添加代理人的电话。
所以我没有得到如何编写WS API,以便根据ajax请求中使用的参数或者该参数。非常感谢您对此的帮助。
答案 0 :(得分:0)
您可以将参数作为查询参数或正文参数传递。 您还没有提到将在后端使用哪个REST框架,因此假设您将使用jersey,代码应如下所示:
使用查询参数:
@POST
@Path("/somepath")
public Response doSomething(@QueryParam("userEmail") String userEmail, @QueryParam("userId") String userId) {
if(userEmail != null && !userEmail.equals("")) {
//use email address
} else if(userId != null && !userId.equals("")) {
//use user id
} else {
throw new RuntimeException()
}
}
使用身体参数:
@POST
@Path("/somepath")
public Response doSomething(userDTO user) {
if(user.getUserEmail() != null && !user.getUserEmail().equals("")) {
//use email address
} else if(user.getUserId() != null && !user.getUserId().equals("")) {
//use user id
} else {
throw new RuntimeException()
}
}
当然,您需要指定要返回的内容类型,并根据需要更改方法类型。