从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 请求中使用的参数来采用这个参数或那个参数。感谢您在这方面的帮助。
您可以将参数作为查询参数或正文参数传递。 您还没有提到您将在后端使用哪个 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()
}
}
当然,您需要指定要返回的内容类型,并根据需要更改方法类型。