从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服务?
感谢的帮助
Amir
找到解决方案如果你正在寻找相同的答案,以下是我的发现: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));
}
});
相关文章:
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 我不知道如何正确地将REST响应对象传递给ReactJS子组件
- 如何使用 Backbone 读取通过同一 REST URL 返回的两个不同对象
- 从javascript向Rest传递对象
- 对象绑定模式的rest属性应该是最后一个
- JS+REST+NodeJS:如何从 JSON 对象解析 JSON 列表
- 使用 REST 和 Javascript 处理复杂对象的最佳实践
- 如何将对象从 JavaScript 上传到 Rest API
- Restangular 不会返回来自 REST API 的对象
- 无法通过 REST API 更新解析对象
- 向WCF Rest Service发送JSON-对象文件为null
- 如何使用JQuery从REST API仅返回JSON对象的一部分
- call()将js对象格式化为正确的rest查询
- 如何使用表单数据将JSON对象传递给使用JS的rest服务
- 通过REST端点用JSON对象更新Mongoose架构
- 有没有一种正确的方法可以确保一次只有一个用户使用REST+HTTP对对象进行更改
- Django Rest框架:在JSON对象内循环
- ES6/Next:使用rest分组进行对象解构
- 在不锁定浏览器的情况下,将大数据JSON从REST请求反序列化为对象
- AngularJS:创建映射到REST资源的对象(orm风格)