7

JSON文字列を入力パラメーターとして受け入れるRESTジャージーWebサービスを作成したいと思います。

また、post requestを使用し、webmethodから1つのJSON文字列を返します。

Ajax POSTリクエストを使用してHTMLページでこれを使用するにはどうすればよいですか?JSON文字列を受け入れるためにWebメソッドで行う必要のあるすべての変更を知りたいです。

 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

これは機能します。「パス」は、AJAX呼び出しで使用される相対URLパスです。

public class Hello {

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

}

于 2013-01-31T09:48:04.643 に答える