自学内容网 自学内容网

什么是RESTful API

目录

RESTful接口风格

传统接口设计

RESTful接口设计

HTTP响应状态码

资源表现形式

RESTfu接口简化设计


RESTful接口风格

目的是开发一套规范科学的API,

下面不同开发者对同一接口的设计不统一

新增员工:
http://localhost/employee/save
http://localhost/employee/add
http://localhost/emoloyee/new

为避免这样的问题,使用RESTful风格的API接口

RESTful风格是一种设计API接口规则,因具有简单、易读、易用的特点,在web项目中广受欢迎

传统接口设计

@Controller
public class EmployeeController{
    @RequestMapping("/employee/list")
    public String list(Model model){
        model.addAttribute("list",employeeService.list())
        return "employee/list";
    }
}
  • 请求路径:@RequestMapping("/employee/list")

  • 请求方式:传统模式忽略请求方式,用RequestMapping可以通用处理,具体任务命名较乱

  • 请求参数:由需求决定

  • 请求响应:模板路径/ 由需求决定

RESTful接口设计

请求路径:由操作的资源决定,一般采用资源名称复数形式

比如接口操作对象是员工,路径可以设为:/employees

@Controller
public class EmployeeController{
    @RequestMapping(value="/employees",method=RequestMethod.GET)
    @ResponseBody
    public List<Employee> list(){
        return employeeService.list();
    }
}

请求方法:由当前接口对资源的操作决定,在HTTP请求方法上做规定

GET:从服务器取出资源(一项或多项)

POST:在服务器新建一个资源

PUT:在服务器更新资源

DELETE:在服务器删除资源

GET/zoos
POST/zoos
GET/zoos
PUT/zoos/{id}
DELETE/zoos/{id}

请求参数:根据接口功能而定,由需求决定

GET/collection:返回资源对象的列表
GET/collection/resource:返回单个资源对象
POST/collection:返回新生成的资源对象
PUT/collection/resource:返回完整的资源对象
DELETE/collection/resource:返回一个空文档

以上返回数据均使用JSON格式

HTTP响应状态码

200 OK - [GET]:服务器成功返回用户请求的数据

201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功

202 Accepted - []:表示一个请求已经进入后排队(异步任务)

400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出请求有错误

资源表现形式

文本可以用txt格式表现,也可以用HTML格式,XML格式,json格式表现,甚至可以采用二进制格式

图片可以用JPG格式表现,也可以用PNG格式表现

它的具体表现形式应在HTTP请求的头信息中用Accept和Content-type字段指定

accept:application/json

content-type:application/json

Accept与Content-type的区别

  • 接受属于请求头,内容类型属于实体头

    Http报头分为通用报头,请求报头,响应报头和实体报头

    请求方的http报头结构:通用报头|请求报头|实体报头

    响应方的http报头结构:通用报头|响应报头|实体报头

  • Accept代表发送端(客户端)希望接受的数据类型

    比如:Accept:application /json,代表客户端希望接受的数据类型是json类型,后台返回json数据

  • Content-type代表发送端(客户端|服务器)发送的实体数据的数据类型

    比如:- type: application / json,代表发送端发送的数据格式是json,后台就要以这种格式来接收前端发过来的数据

RESTfu接口简化设计

  • 在项目最上端,使用RequestMapping抽取共有路径

  • 使用@GetMapping、@PostMapping等代替项目中@RequestMapping(method=RequestMethod.POST/GET/xxx)

  • @RestController等价于@Controller+@ResponseBody


课程:https://www.bilibili.com/video/BV1Ps4y1J7Ve


原文地址:https://blog.csdn.net/weixin_60401853/article/details/142843908

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!