FireFox插件RESTClient 如何使用POST,请求json数据参数。
1.概述:
在用 FireFox 插件 RESTClient 的插件时候,GET DELETE 很正常,但是 POST PUT 传输的 JSON 数据应该放在哪儿呢?怎么配置请求类型呢?怀着这些疑问找了写资料也没有弄出来,后来经过研究其实很简单。特在此分享一下,哈哈!!!
2.火狐RESTClient插件请求Json对象
在插件菜单栏里点击Headers ---> custom header
增加一个Name :Content-type Value: application/json 如果你请求的不是json也可以添加其他value,比如application/x-www-form-urlencoded 。
- 然后在Headers 里就有你添加的项了。
- 在URL地址里添加你要请求的URL:http://localhost:8080/SpringREST/rest/v1_0/airport_service/seatMap/testPost
- 接下来就要添加你要POST请求的参数了,在Body选项卡里添加你要请求的参数,特别注意之前网上博客里提到的有
a=1&b=2
这种形式传参,对于我们json传递参数不能这么传,我们要传json格式的参数。例如:{"id":"20","name":"张三"} - 最后点击SEND按钮就返回你想要的结果了。
3.SpringMVC 服务端示例
/**
* test post
*
*/
@RequestMapping(value="/testPost", method=RequestMethod.POST, produces="text/plain;charset=UTF-8;", consumes="application/json")
@ResponseBody
public String testPost(@RequestBody User user) {
System.out.println("客户端发来的数据:" + user);
return "OK";
}
4.Ajax通过post请求json对象
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
src="<%=basePath%>resources/scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
$("#send").click(function(){
var jsondata = $("#jsondata").val();
var jsonobj = JSON.parse(jsondata)
var callback = function (data) {
$("#result").html(JSON.stringify(data))
}
$.postJSON('<%=basePath%>api/user/test', jsonobj, callback)
});
})
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
'type' : 'POST',
'url' : url,
'contentType' : 'application/json',
'data' : JSON.stringify(data),
'dataType' : 'json',
'success' : callback
});
};
</script>
</head>
<body>
JSON对象
<br>
<textarea id="jsondata" cols="60" rows="5">
{"id":2,"name":"张三","accessToken":"fd6bf3dd3cca4b0ca7c9099447994dba"}
</textarea><br>
<button id="send">POST</button><br>
<font color="red" id="result"></font>
</body>
</html>
5.总结
- Ajax请求时没有设置Content-Type为Json,对于ext来说就是要把POST的内容放到jsonData属性中,而不是params。
- 发送的表单内容对象不要转成JSON字符串,直接发送JSON对象即可,否则就415错误!
- 请求参数格式一定确认你要请求的格式和设置类型是否匹配。
- 测试大家就自己测试吧,大概思路就是这样,返回的数据可以通过Spring容器设置要返回的格式。如果参数里面带中文,可能会出现乱码的问题,这也可以通过容器进行设置。具体参照@ResponseBody 导致的中文乱码问题见:http://my.oschina.net/freegeek/blog/287127
ps.附上一张请求成功的图片,仅供参考。