使用不同的参数调用REST WS

时间:2017-07-27 04:57:57

标签: java web-services rest

从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请求中使用的参数或者该参数。非常感谢您对此的帮助。

1 个答案:

答案 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()
    }
}

当然,您需要指定要返回的内容类型,并根据需要更改方法类型。