1

以下は、REST サービスを次のように定義したシナリオです。

@Path("/company/{companyName}/sessions")
public class RESTSessionController {

    RESTService service = new RESTService();
     @GET
     @Produces({"application/json"})
     @Path("/{username}/{password}") 
     public Result getFriend(@PathParam ("companyName") String companyName ,
             @PathParam ("username") String username,
             @PathParam ("password") String password){

         System.out.println(companyName);
         return service.login(username,password);
     }
}

これを呼び出すには、次のような JavaScript があります。

$.ajax({
    url: 'http://localhost:8888/rest/company/hertz/sessions/amir/help',
    dataType: 'json',
    data: null,
    success: function(data) { 
        $("#abc").html(dumpObj(data,"Result",'',0));
         }
    });

これはうまくいき、私はこれを取り戻します:

{"code":"200","description":"Amir is now logged in.","payload":{"@type":"xs:string","$":"Amir123"}}

これは完全に問題ありません。

ここで、さらに一歩進んで、オブジェクトを使用してサービスを呼び出そうとしているので、コードを次のように変更しました。

$.ajax({
    qObj={username:"Amir",password:"123",companyName:"hertz"}
    url: 'http://localhost:8888/rest/company/',
    dataType: 'json',
    data: JSON.stringify(qObj),
    success: function(data) { 
        $("#abc").html(dumpObj(data,"Result",'',0));
         }
    });

そして、それはうまくいきません。

私の質問は簡単です。jquery/javascript を使用して、パスにパラメーターを指定して (またはパラメーターを指定せずに) REST サービスを呼び出す方法を教えてください。

助けてくれてありがとう

アミール

4

2 に答える 2

1

解決策を見つけた同じ答えを探している場合は、私の調査結果を次に示します。1)RESTサービスに送信されるオブジェクトの一部としてパスで使用される変数を使用することはできません。したがって、私の場合、{companyName}をjsonオブジェクトの一部として実際に渡すことはできませんでした。2)メソッド宣言では、このメソッドがjsonオブジェクトを予期していることを示すディレクティブである必要があります。これが当てはまるため、コードを次のように変更しました。

 @PUT
 @Produces(MediaType.APPLICATION_JSON)
 @Consumes(MediaType.APPLICATION_JSON)
 @Path("/")
 public API_Session login(API_Session_Request request){

そして、すべてが魅力のように機能しました。

3)javascriptでは、JSON.stringifyオブジェクトを使用する必要があります。

var qObj={username:"Amir",password:"123",company_name:"hertz"}
$.ajax({
    type:'PUT',
    url: 'http://localhost:8888/rest/company/sessions',
    dataType: 'json',
    data: JSON.stringify(qObj),
    contentType: "application/json; charset=utf-8",
    success: function(data) { 
        $("#abc").html(dumpObj(data,"Result",'',0));
         }
    });

これが時間を節約するのに役立つことを願っています。

于 2012-08-03T04:39:05.180 に答える
0

JSON.stringify を使用する必要があるのはなぜですか? これを試して、私に知らせてください:)

$.ajax({
    url: 'http://localhost:8888/rest/company/',
    dataType: 'json',
    data: {username:"Amir",password:"123",companyName:"hertz"},
    success: function(data) { 
        $("#abc").html(dumpObj(data,"Result",'',0));
         }
    });
于 2012-08-01T16:24:34.817 に答える