[英]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.