zoukankan      html  css  js  c++  java
  • springmvc-restful

    1.restful概述

    REST 仅仅是一种架构的风格,并不是真正的架构,也不是一个软件,而是一种思想。

    我们可以基于现有的HTTP、URI、XML、等现有技术来实现REST的风格。而不用去学习任何新的技术。

    而学习REST的关键,不是任何的API或者实现方式,而是这种思想。

     简单案列测试:

    package cn.controller;
    
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import cn.pojo.User;
    
    @Controller
    @RequestMapping("users")
    public class UserController {
    
        /**
         * restful根据ID查询用户
         * @param id
         * @return
         */
        @RequestMapping(value="{id}" ,method=RequestMethod.GET)
        public ResponseEntity<User> findUserById(@PathVariable("id") Long id) {
            
            User user;
            try {
                user = new User();
                if (user == null) {
                    return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
                }
                return ResponseEntity.status(HttpStatus.OK).body(user);
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
            }
        }
        
        /**
         * restful 新增用户  
         * @param user
         * @return
         */
        @RequestMapping(method=RequestMethod.POST)
        public ResponseEntity<Void> addUser(User user){
            
    //        输出有乱码 
            try {
                System.out.println("新增");
                System.out.println(user);
                return ResponseEntity.status(HttpStatus.CREATED).build();
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
            }
        }
        
        /**
         * 更新用户
         * @param user
         * @return
         */
        @RequestMapping(method=RequestMethod.PUT)
        public ResponseEntity<Void> updateUser(User user){
            
            /*
             * 更新用户时,请求发送成功,但是携带的参数不能接收到 ,因此需要配置过滤器解决PUT方式的请求
             *     <!-- 解决PUT请求的参数为null问题 -->
                <filter>
                    <filter-name>HttpMethodFilter</filter-name>
                    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
                </filter>
                <filter-mapping>
                    <filter-name>HttpMethodFilter</filter-name>
                    <url-pattern>/*</url-pattern>
                </filter-mapping>
             * */
            
            try {
                System.out.println("更新用户");
                System.out.println(user);
                return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
            }
        }
        
        
        /**
         * 删除用户
         * @param id
         * @return
         */
        @RequestMapping(method=RequestMethod.DELETE)
        public ResponseEntity<Void> deleteUser(Long id){
            
            /*
             * 对于delete方式比较特殊  配置过滤器,运用POST方式,携带参数_method:DELETE
             * 在web.xml配置
             * <!-- 通过POST请求传递参数,再 用_method指定要转化的请求方式(DELETE或PUT),最后转为DELETE或PUT请求 -->
                    <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>
             * */
            try {
                System.out.println("删除用户");
                System.out.println("id=" + id);
                return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
            }
        } 
        
    }
  • 相关阅读:
    关于EOM(Enterprise Operating Model)企业经营模型(1)
    关于EOM(Enterprise Operating Model)企业经营模型(4)
    关于EOM(Enterprise Operating Model)企业经营模型(2)
    Linux之父的十大名言[转]
    初识Lucene
    C#实现所有经典排序算法
    屏蔽浏览器关闭按钮及ALT+F4 快捷键
    DateTime ToString 大全
    Lucene.Net 系列
    SQL Server Date Formats
  • 原文地址:https://www.cnblogs.com/lichangyun/p/8536565.html
Copyright © 2011-2022 走看看