• spring boot 学习(三)API注解记录及测试


    spring boot API注解记录及测试

    部分注解解析

    • @Controller : 修饰创建处理 http 处理对象,一般用于页面渲染时使用。
    • @RestController : Json数据交互; 相当于@Controller 中配置 @ResponseBody 来返回 Json数据。
    • @RequestMapping : 配置映射URL。

    关于 @Controller 与 @RestController 的区别

    官方文档:@RestController is a stereotype annotation that combines @ResponseBody and @Controller。
    谷歌翻译:@RestController是一个构造型注释,结合了@ResponseBody和@Controller。
    1) 使用@RestController注解Controller,配置的视图解析器不起作用,返回为Json数据。(JSON、XML或自定义mediaType内容)
    2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器。

    关于 @RequestMapping 的六个属性

    value:指定请求的实际地址。(value的uri值为三类:具体值、含有某变量的一类值、含正则表达式的一类值)。
    method:指定请求的method类型, GET、POST、PUT、DELETE等。
    consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html。
    produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
    params: 指定request中必须包含某些参数值是,才让该方法处理。
    headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

    创建一份简单的API

    请求类型URL功能说明
    GET /users 查询用户列表
    POST /users 创建一个用户
    GET /users/id 根据id查询一个用户
    PUT /users/id 根据id更新一个用户
    DELETE /users/id 根据id删除一个用户

    User实体类:

    public class User {
    
        private long id;
        private String name;
        private Integer age;
    
        //省略了 Getter 与 Setter 方法。
    }
    

    具体的 Controller 类:

    @RestController
    @RequestMapping(value = "/users")
    public class UserController {
    
        //创建线程安全的Map
        static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
    
        @RequestMapping(value="/", method=RequestMethod.GET)
        public List<User> getUserList(){
            // 处理"/users/"的GET请求,用来获取用户列表
            List<User> list = new ArrayList<User>(users.values());
            return list;
        }
    
        @RequestMapping(value="/", method=RequestMethod.POST)
        public String postUser(@ModelAttribute User user) {
            // 处理"/users/"的POST请求,用来创建User
            users.put(user.getId(), user);
            return "创建用户 "+ id +" 成功!";
        }
    
        @RequestMapping(value="/{id}", method=RequestMethod.GET)
        public User getUser(@PathVariable Long id) {
            // 处理"/users/{id}"的GET请求,用来获取url中id值的User信息
            // url中的id可通过@PathVariable绑定到函数的参数中
            return users.get(id);
        }
    
        @RequestMapping(value="/{id}", method=RequestMethod.PUT)
        public String putUser(@PathVariable Long id, @ModelAttribute User user) {
            // 处理"/users/{id}"的PUT请求,用来更新User信息
            User u = users.get(id);
            u.setName(user.getName());
            u.setAge(user.getAge());
            users.put(id, u);
            return "更新用户 "+id+" 信息成功!";
        }
    
        @RequestMapping(value="/{id}", method= RequestMethod.DELETE)
        public String deleteUser(@PathVariable Long id) {
            // 处理"/users/{id}"的DELETE请求,用来删除User
            users.remove(id);
            return "删除用户 "+id+" 成功!";
        }
    }
    

    利用 google chrome 的 Postman 来进行测试

    1. 检查当前用户列表。

    链接(GET方法):http://localhost:8080/users/

    2. 创建一个新用户。

    链接(POST方法):http://localhost:8080/users/

    3. 更新用户信息。

    链接(PUT方法):http://localhost:8080/users/123

    4. 查询用户信息。

    链接(GET方法):http://localhost:8080/users/123

    5. 检查当前用户列表。

    链接(GET方法):http://localhost:8080/users/

    6. 删除用户信息。

    链接(DELETE方法):http://localhost:8080/users/123

  • 相关阅读:
    【MySQL】根据JSON字段的内容检索查询数据
    【PHP】跑大批量数据脚本
    【Thinkphp】 CLI模式下接收参数的几种方式
    元素类型 “item” 相关联的 “name” 属性值不能包含 ‘<’ 字符
    python unicode、utf-8、gbk编码与解码展示
    python使用requests通过代理地址发送multipart/form-data报文数据
    python使用requests通过代理地址发送application/x-www-form-urlencoded报文数据
    python使用requests通过代理地址发送application/json报文数据
    python使用requests通过代理地址发送text/xml报文数据
    python使用requests通过代理地址发送text/plain报文数据
  • 原文地址:https://www.cnblogs.com/MaxElephant/p/8108281.html
Copyright © 2020-2023  润新知