• 小满nestjs(第七章 RESTful 风格设计)


    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

    2.RESTful 版本控制 

    一共有三种我们一般用第一种 更加语义化

    URI Versioning版本将在请求的 URI 中传递(默认)
    Header Versioning自定义请求标头将指定版本
    Media Type Versioning请求的Accept标头将指定版本
    1. import { NestFactory } from '@nestjs/core';
    2. import { VersioningType } from '@nestjs/common';
    3. import { AppModule } from './app.module';
    4. async function bootstrap() {
    5. const app = await NestFactory.create(AppModule);
    6. app.enableVersioning({
    7. type: VersioningType.URI,
    8. })
    9. await app.listen(3000);
    10. }
    11. bootstrap();

    然后在user.controller 配置版本

    Controller 变成一个对象 通过version 配置版本

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller({
    6. path:"user",
    7. version:'1'
    8. })
    9. export class UserController {
    10. constructor(private readonly userService: UserService) {}
    11. @Post()
    12. create(@Body() createUserDto: CreateUserDto) {
    13. return this.userService.create(createUserDto);
    14. }
    15. @Get()
    16. // @Version('1')
    17. findAll() {
    18. return this.userService.findAll();
    19. }
    20. @Get(':id')
    21. findOne(@Param('id') id: string) {
    22. return this.userService.findOne(+id);
    23. }
    24. @Patch(':id')
    25. update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
    26. return this.userService.update(+id, updateUserDto);
    27. }

     3.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 上游接口有问题或者服务器问题

  • 相关阅读:
    Codeforces Round #827 (Div. 4)
    贷中客群评级的场景实现,来试试这些多维的实操方法
    iOS 16 Beta 2值不值得升级 iOS 16 Beta 2升级建议
    Qt之随机数
    Python.迭代器对象iter()(基于iterator特性拆解繁复的单行“装逼代码”,搞明白序列定长元素选取“秘法”。)
    【ROS入门】机器人运动控制以及里程计信息显示
    闵帆老师《论文写作》课程之心得体会
    图计算发展简史(上)
    基于单片机双路压力监测报警系统
    SpringBoot配置外部Tomcat项目启动流程源码分析(上)
  • 原文地址:https://blog.csdn.net/qq1195566313/article/details/126256102