java - 从 javascript 将对象传递给 Rest

标签 java javascript jquery rest

这是场景 我有一个 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));
         }
    });

希望这可以帮助您节省一些时间。

关于java - 从 javascript 将对象传递给 Rest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763437/

相关文章:

javascript - ajax表单提交前验证

javascript - 显示 DOM 元素事件及其处理程序

javascript - 如何使用 .css 添加类并添加删除类或更改属性?

jQuery offset() 表现奇怪

Java 和 JScrollPane : where to call setPreferredSize?

java - 如何在 Eclipse(Java 项目)中启用内存监视器?

javascript - 未捕获的 ReferenceError : lookup is not defined at HTMLButtonElement. onclick

javascript - 如果弹出窗口关闭,如何在background.js和popup.js之间发送数据?

java - Maven:访问自签名存储库时出现 SunCertPathException

java - 使用 servlet 和 jsp 显示表格时出现问题