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();
}
}
以上即实现了一个简易的版本控制