美文网首页
SpringMVC中两种Restful风格的实现方式

SpringMVC中两种Restful风格的实现方式

作者: 薛定谔的猫狗 | 来源:发表于2019-08-29 18:48 被阅读0次

    一种是使用方法返回值交给SpringMVC,SpringMVC内部使用Jackson自动生成,一种是通过得到ServletResponse,通过利用Jackson手动生成的json后,写进ServletResponse中返回。
    代码如下:

        @ResponseBody
        @RequestMapping("restone")
        public void getRestOne()
        {
            ObjectMapper objectMapper = new ObjectMapper();
            Message message = new Message();
            message.setTitle("zxc");
            message.setContent("zixingc");
            String resp = "";
            try
            {
                 resp = objectMapper.writeValueAsString(message);
            } catch (JsonProcessingException e)
            {
                e.printStackTrace();
            }
            try
            {
                ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse().getWriter().write(resp);
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    

    我们使用
    ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();得到ServletResponse,通过getWrite().write方法写入(这里会抛异常)。访问对应的虚拟路径会得到正常结果

    image.png
        @ResponseBody
        @RequestMapping("resttwo")
        public Message getRestTwo()
        {
            Message message = new Message();
            message.setTitle("zxc");
            message.setContent("zixingc");
            return message;
        }
    

    这里通过返回Message,交给SpringMVC内部进行json生成,我认为SpringMVC也应该是使用的第一种方法进行json生成放入ServletResponse中完成json返回的。

    这两种方法我认为各有各的好处,使用第二种应该是使用SpringMVC完成rest的标准返回方式(这里忽略了GET、POST等等HTTP协议的请求),能大大减少代码量。但是我个人认为第一种方式要灵活许多,它只是借助了SpringMVC的控制器方式,而具体的内容实现和返回由自己填写。

    相关文章

      网友评论

          本文标题:SpringMVC中两种Restful风格的实现方式

          本文链接:https://www.haomeiwen.com/subject/farwectx.html