Nest.js从0到1搭建博客系统---搭建框架(1)

前言

沉默了很久,最终决定通过空闲时间入手Nest.js的学习。由于是刚入坑(新手村),所有选择博客系统来磨炼自身。这也是我第一次在掘金写文章做笔记。如有不足之处望金友们海涵,如若能指点一二,小生不胜受恩感激。

Nest(NestJS)是一个用于构建高效、可扩展 Node.js 服务器端应用程序的框架。它使用渐进式的JavaScript,完全支持并构建于 TypeScript 上(同时仍然允许开发者使用纯JavaScript进行编码),结合了面向对象编程(OOP)、函数式编程(FP)和函数响应式编程(FRP)的元素。 在内部,Nest使用强大的HTTP服务器框架,如 Express(默认)并且可以选择配置为使用 Fastify! Nest在这些常见的Node.js框架(Express/Fastify)之上提供了一层抽象,同时也直接向开发者暴露了它们的API。这使得开发者可以自由使用众多为底层平台提供的第三方模块。

NestJs中文文档

项目技术栈

  • NestJs
  • TypeORM、Mysql
  • Redis
  • Minio
  • JWT
  • React全家桶(后台管理)
  • Vue3全家桶(前台管理)

努力使自己变优秀,然后骄傲的生活;要一直保持自己喜欢的样子,不要随波逐流,也不要过度失落。温柔的人,一定会有一个好的结局

部署

  • docker
  • 服务器

安装全局脚手架 NEST CLI

shell 复制代码
npm i -g @nestjs/cli

初始化项目

shell 复制代码
nest new nest_vhen_blog

运行项目

shell 复制代码
npm run start:dev
  • 创建模块
shell 复制代码
 nest g mo modules/user
  • 创建控制器
shell 复制代码
 nest g co modules/user
  • 创建服务
shell 复制代码
nest g s modules/user
  • 生成所有的NestJS构建块(模块、服务、控制器类),还生成实体类、DTO类以及测试(.spec)文件
shell 复制代码
nest g resource modules/user

# RESTful 风格

  • 查询--GET
  • 提交--POST
  • 更新--PUT/PATCH
  • 删除--DELETE

RESTful 版本控制

  • URI Versioning :版本将在请求的 URI 中传递(默认)
  • Header Versioning :自定义请求标头将指定版本
  • Media Type Versioning :请求的Accept标头将指定版本
ts 复制代码
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();
  • user.controller 配置版本
ts 复制代码
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';

@Controller({
  path: "user",
  version: '1'
})
// @Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) { }

  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }

  @Get()
  // @Version('1')
  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);
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.userService.remove(+id);
  }
}

项目地址:nest_vhen_blog

相关推荐
yuanlaile8 天前
做了 3 年后端才明白:学 NestJS 千万不要只学 API 语法,完整电商项目才是分水岭
typescript·nestjs·node.js 后端·nestjs实战
濮水大叔9 天前
NestJS Dynamic Providers 与 Cabloy/Vona Provider Scene:同接口多实现的两种装配哲学
typescript·node.js·nestjs
濮水大叔9 天前
Cabloy/Vona 如何避开 NestJS 的循环依赖问题:懒属性注入机制源码解析
typescript·node.js·nestjs
花旗蜕变19 天前
前端转 NestJS 全栈实践:从表单页面到微信业务系统
前端·typescript·nestjs
柒和远方1 个月前
NestJS + TypeORM 学习笔记:语法和类型不绕了
postgresql·orm·nestjs
小二李1 个月前
第15章 NestJS 项目部署
nestjs
前端踩bug工程师1 个月前
nestjs 实现一对多,多对一,一对一在实现上的区别
nestjs
爱丶不疚1 个月前
Electron:Module 与 Service 的职责边界与加载时序编排
前端·electron·nestjs
沐沐师2 个月前
Nest.js 微服务入门教程
微服务·nestjs
沐沐师2 个月前
Redis 入门教程
redis·nestjs