Nest.js学习笔记(六)

简介: 本节记录Restful风格Api的介绍以及使用Nest.js做了一个简单的版本控制

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版本控制

  1. 启动版本控制。在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    // 自定义
}
  1. 使用版本控制(两种方式)

    1. 统一版本控制,将@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
  1. 单独版本控制。在@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();
  }
}

以上即实现了一个简易的版本控制

相关文章
|
12月前
快速入门nest.js(7/10)--应用配置
然后,你就可以像下面的方式使用对应的变量值了,注意这里所有的变量值都是字符串,而port要求的是数字,所以我们还需要进行一个转换。
120 0
|
2月前
|
中间件
12_nest.js中间
12_nest.js中间
39 1
|
2月前
11_nest.js模块
11_nest.js模块
24 0
|
9月前
|
API 网络架构
初识nest.js的controller(入门)
初识nest.js的controller(入门)
|
10月前
|
JSON 前端开发 JavaScript
NEST.JS使用心得
NEST.JS使用心得
|
10月前
|
JavaScript
为什么从egg.js到nest.js(二)
进入部门工作后,接触到的node.js服务端框架,是egg.js,后面基于扩展增加了很多插件,比如:@Controller @Service等注解,还有针对egg-framework 定制化部门使用的底层framework。
76 0
为什么从egg.js到nest.js(二)
|
10月前
|
SQL JSON JavaScript
为什么从egg.js到nest.js(一)
进入部门工作后,接触到的node.js服务端框架,是egg.js,后面基于扩展增加了很多插件,比如:@Controller @Service等注解,还有针对egg-framework 定制化部门使用的底层framework。
348 0
|
前端开发
Nest.js学习笔记(九)
本节记录Nest.js提供者相关的内容
116 0
|
开发框架 JavaScript 前端开发
Nest.js学习笔记(一)
本系列笔记内容根据B站up主“小满zs”视频教程整理而成,本节简要介绍Nest.js
87 0
|
容器
Nest.js学习笔记(二)
本节记录依赖倒置、控制反转、依赖注入相关内容
58 0