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();
  }
}

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

相关文章
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
26 0
|
3月前
|
移动开发 JavaScript 前端开发
webgl学习笔记3_javascript的HTML DOM
webgl学习笔记3_javascript的HTML DOM
41 0
webgl学习笔记3_javascript的HTML DOM
|
3月前
|
JavaScript 前端开发 Java
webgl学习笔记2_javascript基础快速学习
webgl学习笔记2_javascript基础快速学习
32 0
|
3月前
|
前端开发 JavaScript API
JavaScript学习笔记(一)promise与async
JavaScript学习笔记(一)promise与async
|
3月前
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
40 0
|
9月前
|
存储 JavaScript 前端开发
【js】函数概述学习笔记(8)
【js】函数概述学习笔记(8)
30 0
|
9月前
|
存储 JavaScript
【js】数组学习笔记(7-2)
【js】数组学习笔记(7-2)
50 0
|
9月前
|
JavaScript 索引
【js】数组学习笔记(7-1)
【js】数组学习笔记(7-1)
39 0
|
9月前
|
JavaScript 前端开发 Python
【js】学习笔记-流程控制结构(5)
【js】学习笔记-流程控制结构(5)
55 0
|
9月前
|
前端开发 JavaScript Python
javascript入门学习笔记打卡(2)
javascript入门学习笔记打卡(2)
32 0