7

我想创建一个接受 JSON 字符串作为输入参数的 REST Jersey Web 服务。

此外,我将使用来自 webmethod 的发布请求,我将返回一个 JSON 字符串。

如何使用 Ajax 发布请求在 HTML 页面中使用它。我想知道我需要在 Web 方法上进行哪些更改才能接受 JSON 字符串。

 public class Hello {

      @POST
     public String sayPlainTextHello() {
      return "Hello Jersey";
      }
   }
4

2 回答 2

26

需要分解您的请求。首先,您要接受 JSON 字符串。所以在你的方法上你需要

@Consumes(MediaType.APPLICATION_JSON)

接下来,您需要决定您希望您的方法获得什么。您可以按照您的建议获取 JSON 字符串,在这种情况下,您的方法将如下所示:

@Consumes(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final String input) {

或者,如果您的 JSON 字符串映射到 Java 对象,您可以直接获取该对象:

@Consumes(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final MyObject input) {

您声明要返回 JSON 字符串。所以你需要:

@Produces(MediaType.APPLICATION_JSON)

然后你需要实际返回一个 JSON 字符串:

return "{\"result\": \"Hello world\"}";

所以你的完整方法看起来像这样:

@PATH("/hello")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final String input) {
  return "{\"result\": \"Hello world\"}";
}

关于使用 AJAX 发送和接收,它看起来像这样:

var myData="{\"name\": \"John\"}";
var request = $.ajax({
    url: "/hello",
    type: "post",
    data: myData
});

request.done(function (response, textStatus, jqXHR){
    console.log("Response from server: " + response);
});
于 2013-01-31T10:11:40.183 回答
0

这将起作用。“path”是在 AJAX 调用中使用的相对 URL 路径。

public class Hello {

@POST
@Path("/path")
@Produces({ "text/html" })
 public String sayPlainTextHello() {
  return "Hello Jersey";
  }

}

于 2013-01-31T09:48:04.643 回答