RESTful 接口设计拓展,接口设计注意事项,注解的简化

文章目录

  • RESTful 接口设计拓展
    • 1.多参数传递
    • 2.URL拓展
    • 3.RESTful接口注意事项
    • 4.注解的简化


RESTful 接口设计拓展

1.多参数传递

/**
 * 获取某一个员工,多参数
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--get
 * 3. 请求参数--id,name,age
 * 4. 请求响应--一个员工--Employee--json
 */
@RequestMapping(value = "/employees/{id}/{name}/{age}", method = RequestMethod.GET)
@ResponseBody
public Employee moreArgsOneList(@PathVariable Long id,@PathVariable String name, @PathVariable int age){
    return new Employee(id, name, age);
}

postman 显示
RESTful 接口设计拓展,接口设计注意事项,注解的简化_第1张图片

@PathVariable Long id,@PathVariable String name, @PathVariable int age

也可以换成

Employee employee 对象的方式,也是可以成功传递参数的。

2.URL拓展

参数路径 优缺点

优点:一定程度上隐藏参数
缺点:如果参数较多,url比较长,不优雅

开发时一般时2者混用

3.RESTful接口注意事项

RESTful 接口设计拓展,接口设计注意事项,注解的简化_第2张图片

我们用的时Spring boot 版本的MVC ,spring boot 已经为我们自动装配。
如果是原生MVC的就需要加过滤器

4.注解的简化

package org.chad.controller;

import org.chad.domain.Employee;
import org.chad.util.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

/**
 * 员工的对外接口声明类
 * 员工的控制层/表现层
 */
@RestController //@Controller + @ResponseBody
@RequestMapping("employees")
public class EmployeeController {


    /**
     * 获取所有员工
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--get
     * 3. 请求参数--无
     * 4. 请求响应--多个员工--List--json
     */
    @GetMapping//@RequestMapping( method = RequestMethod.GET)
    public List<Employee> list(){
        //查询MySQL数据库得到员工列表信息
        //假装查询数据库
        List<Employee> list = Arrays.asList(new Employee(1L, "大王", 18),new Employee(2L, "小李", 19),new Employee(3L, "小查", 20));
        return list;
    }

    /**
     * 增加一个员工
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--POST
     * 3. 请求参数--Employee
     * 4. 请求响应--Employee--json
     */
    @PostMapping//@RequestMapping(method = RequestMethod.POST)
    public Employee add(Employee employee){
        //假设添加员工
        employee.setId(1L);
        return employee;
    }

    /**
     * 更新一个员工
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--PUT
     * 3. 请求参数--id,name,age
     * 4. 请求响应--Employee--json
     */
    @PutMapping//@RequestMapping( method = RequestMethod.PUT)
    public Employee update(Employee employee){
        //假设添加员工
        employee.setName(employee.getName() + "_update");
        return employee;
    }

    /**
     * 删除一个员工
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--DELETE
     * 3. 请求参数--id
     * 4. 请求响应--删除之后的状态--jsonResult--json
     *
     * jsonResult:统一的响应返回值
     *
     * {
     *     code:200,
     *     msg:"操作成功”,
     *     data:null
     * }
     */
    @DeleteMapping //@RequestMapping(method = RequestMethod.DELETE)
    public JsonResult delete(Long id){
        return JsonResult.success();
    }

    /**
     * 获取某一个员工
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--get
     * 3. 请求参数--id
     * 4. 请求响应--一个员工--Employee--json
     */
    @GetMapping("/{id}") //@RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public Employee oneList(@PathVariable Long id){
        return new Employee(id, "张三", 18);
    }

    /**
     * 获取某一个员工,多参数
     * 1. 请求路径--确认资源--员工--/employees
     * 2. 请求方法--get
     * 3. 请求参数--id,name,age
     * 4. 请求响应--一个员工--Employee--json
     */
    @GetMapping("/{id}/{name}/{age}") //@RequestMapping(value = "/{id}/{name}/{age}", method = RequestMethod.GET)
    public Employee moreArgsOneList(@PathVariable Long id,@PathVariable String name, @PathVariable int age){
        return new Employee(id, name, age);
    }
}

做了三件事情
1.路径简化
2.@RestCotroller 代替 @Cotroller + @ResponseBody
3.@GetMapping 代替了 @RequestMapping(method = RequestMethod.GET)

你可能感兴趣的:(RESTful,API,大数据技术,restful,java,postman)