簡體   English   中英

將對象從javascript傳遞到Rest

[英]Passing an object to Rest from javascript

這是我將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服務?

謝謝你的幫助

阿米爾

找到解決方案如果您要尋找相同的答案,這是我的發現: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));
         }
    });

希望這可以幫助您節省時間。

為什么必須使用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));
         }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM