SpringMVC+Restful风格编程

在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);
        }
    });  
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值