在SpringMVC搭建的基础上,进行设计Restful风格的接口。
Restful风格是基于http协议规范的,使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE等。
1.GET方法
代码:
@RequestMapping(value = "/user/{id}/{name}", method = RequestMethod.GET)
@ResponseBody
public User getUser(@PathVariable("id") long id,@PathVariable("name") String name) {
log.info("GET方法获取人员信息id=" + id+",name="+name);
User user = new User();
user.setName(name);
user.setId(id);
return user;
}
前端ajax调用:
function btnGet(){
var id = $("#id").val();
var name = $("#name").val();
$.ajax({
url:"http://localhost:8080/rest/user/"+id+"/"+name,
type:"get",
success:function(data){
alert(JSON.stringify(data));
console.log("over..");
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
}
2.POST方法
代码:
@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseBody
public Object addUser(User user) {
log.info("POST方法注册人员信息成功id=" + user.getId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg", "注册人员信息成功");
jsonObject.put("id", user.getId());
jsonObject.put("name", user.getName());
return jsonObject;
}
前端ajax调用:
function btnAdd(){var id = $("#id").val();
var name = $("#name").val();
$.ajax({
url:"http://localhost:8080/rest/user/",
type:"post",
data:{
'id':id,
'name':name,
},
success:function(data){
alert(JSON.stringify(data));
console.log("over..");
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
以上两种方法均直接支持,但是PUT和DELETE方法,在SpringMVC不可以直接支持,需要在web.xml中如下配置:
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在使用时,依旧使用POST进行type设置,但是需要另外加参数_method,如下:
3.PUT方法
代码:
@RequestMapping(value = "/user", method = RequestMethod.PUT)
public @ResponseBody Object updateUser(User user) {
log.info("PUT方法更新人员信息id=" + user.getId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg", "更新人员信息成功");
jsonObject.put("id", user.getId());
jsonObject.put("name", user.getName());
return jsonObject;
}
前端ajax调用:
function btnUpdate(){var id = $("#id").val();
var name = $("#name").val();
$.ajax({
url:"http://localhost:8080/rest/user/",
type:"post",
data:{
_method:'put',
'id':id,
'name':name,
},
success:function(data){
alert(JSON.stringify(data));
console.log("over..");
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
}
4.DELETE方法
代码:
@RequestMapping(value = "/user", method = RequestMethod.DELETE)
public @ResponseBody Object deleteUser(int id) {
log.info("DELETE方法删除人员信息id=" + id);
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg", "删除人员信息成功");
jsonObject.put("id", id);
return jsonObject;
}
前端ajax调用:
function btnDel(){var id = $("#id").val();
$.ajax({
url:"http://localhost:8080/rest/user/",
type:"post",
data:{
_method:'delete',
'id':id
},
success:function(data){
alert(JSON.stringify(data));
console.log("over..");
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
}
5.PATCH方法
代码:
@RequestMapping(value = "/user", method = RequestMethod.PATCH)
public @ResponseBody List<User> listUser(
@RequestParam(value = "name", required = false, defaultValue = "") String name) {
log.info("PATCH方法批量查询人员name like " + name);
List<User> lstUsers = new ArrayList<User>();
User user = new User();
user.setName("张三");
user.setId(101l);
lstUsers.add(user);
User user2 = new User();
user2.setName("李四");
user2.setId(102l);
lstUsers.add(user2);
return lstUsers;
}
前端ajax调用:
function btnList(){var name = $("#name").val();
$.ajax({
url:"http://localhost:8080/rest/user/",
type:"post",
data:{
_method:'patch',
'name':name
},
success:function(data){
alert(JSON.stringify(data));
console.log("over..");
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
}