入力パラメータとしてJSON文字列を受け入れるREST JerseyWebサービスを作成したいと思います。
また、post requestを使用し、webmethodから1つのJSON文字列を返します。
Ajax POSTリクエストを使用してHTMLページでこれを使用するにはどうすればよいですか? JSON文字列を受け入れるためにWebメソッドで行う必要のあるすべての変更を知りたいです。
public class Hello {
@POST
public String sayPlainTextHello() {
return "Hello Jersey";
}
}
あなたの要求を分解する必要があります。まず、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);
});
これは機能します。 「パス」は、AJAX呼び出しで使用される相対URLパスです。
public class Hello {
@POST
@Path("/path")
@Produces({ "text/html" })
public String sayPlainTextHello() {
return "Hello Jersey";
}
}