RESTful 是一种风格,在RESTful中,一切都被认为是资源,每个资源有对应的URL标识
不是标准也不是协议,只是一种风格。当然你也可以不按照他的风格去写。
1.接口url
传统接口
http://localhost:8080/api/get_list?id=1 查询
http://localhost:8080/api/delete_list?id=1 删除
http://localhost:8080/api/update_list?id=1 更新
RESTful接口
http://localhost:8080/api/get_list/1 查询 删除 更新都可以
RESTful 风格一个接口就会完成增删改差 他是通过不同的请求方式来区分的
查询 GET 提交 POST 更新 PUT PATCH 删除 DELETE
总结一下,在Restful风格接口中,对数据进行什么操作不再由参数决定,而是将每一个资源都定义为一个URL,通过区分请求方式来对数据进行相应操作
Restful版本控制
- 启动版本控制。在main.ts中调用app.enableVersioning方法,该方法接收一个配置对象,具体配置如图所示
import { NestFactory } from '@nestjs/core'; import { VersioningType } from '@nestjs/common'; // VersioningType是一个枚举类型 import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 开启版本控制 app.enableVersioning({ // URI表示通过URL进行版本控制 type: VersioningType.URI, }); await app.listen(3000); } bootstrap();
export declare enum VersioningType { URI = 0, // 通过url进行版本控制 HEADER = 1, // 通过请求头进行版本控制 MEDIA_TYPE = 2, CUSTOM = 3 // 自定义 }
- 使用版本控制(两种方式)
- 统一版本控制,将@Controller装饰器中的字符串改为配置对象,version指定对应的版本
import { Controller, Get, Post, Body, Patch, Param, Delete, } from '@nestjs/common'; import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; /* 在此处进行版本控制,原来的字符串改为配置对象,新增一个version属性(注意没有v) */ @Controller({ path: 'user', version: '1', }) export class UserController { constructor(private readonly userService: UserService) {} @Get() findAll() { return this.userService.findAll(); } } // 访问http://localhost:3000/v1/user
- 单独版本控制。在@Get装饰器下新增一个@Version装饰器,该装饰器接收一个字符串表示方法对应版本。注意此时访问路径仍然是http://localhost:3000/v1/user
import { Controller, Get, Post, Body, Patch, Param, Delete, Version, } from '@nestjs/common'; import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; @Controller('user') export class UserController { constructor(private readonly userService: UserService) {} @Get() @Version('1') findAll() { return this.userService.findAll(); } }
以上即实现了一个简易的版本控制