RESTful
RESTful是一种代码风格,不是一种标准,不必遵循
在RESTful中,一切都被认为是资源,每个资源有对应的URL标识
RESTful规范
接口url
传统接口
1 2 3
| 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接口
1
| http://localhost:8080/api/get_list/1
|
RESTful风格,只使用一个接口就完成增删改差
不同的操作通过不同的请求方式(GET、POST、PUT、PATCH、DELETE等)和请求路径区分
版本控制
版本控制风格一共有三种:
- URI Versioning 版本将在请求的URI中传递
- Header Versioning 自定义请求标头将指定版本
- Media Type Versioning 请求的Accept标头将指定版本
一般用第一种,更加语义化
main:
1 2 3 4 5 6 7 8 9 10 11 12 13
| import { NestFactory } from '@nestjs/core'; import { VersioningType } from '@nestjs/common'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableVersioning({ type: VersioningType.URI, }) await app.listen(3000); } bootstrap();
|
conrtoller:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 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({ path:"user", version:'1' }) export class UserController { constructor(private readonly userService: UserService) {} @Post() create(@Body() createUserDto: CreateUserDto) { return this.userService.create(createUserDto); } @Get() findAll() { return this.userService.findAll(); } @Get(':id') findOne(@Param('id') id: string) { return this.userService.findOne(+id); } @Patch(':id') update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) { return this.userService.update(+id, updateUserDto); } }
|
Code码
码 | 英文含义 | 中文含义 |
---|
200 | OK | 成功 |
304 | Not Modified | 协商缓存了 |
400 | Bad Request | 参数错误 |
401 | Unauthorized token | 错误 |
403 | Forbidden referer origin | 验证失败 |
404 | Not Found | 接口不存在 |
500 | Internal Server Error | 服务端错误 |
502 | Bad Gateway | 上游接口有问题或者服务器问题 |