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


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 显示
在这里插入图片描述

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

也可以换成

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

2.URL拓展

在这里插入图片描述

参数路径 优缺点

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

开发时一般时2者混用

3.RESTful接口注意事项

在这里插入图片描述

我们用的时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<Employee>--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)

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chad__chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值