您的位置:首页 > 编程语言 > Java开发

SpringMVC+Restful风格编程

2017-09-28 10:42 393 查看
在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);

        }

    });  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: