返回

《初窥门径:用装饰器在Nest.js打造迷你后端应用》

前端

在 Nest.js 中用装饰器打造一个迷你的后端世界

踏入 Nest.js 的装饰器世界,开启一场后端开发的奇幻之旅。让我们用两天的时间,领略装饰器的强大和灵活性,构建一个迷你且惊艳的后端应用。

数据模型与装饰器:铸造 API 的基石

后端应用的核心是数据,而数据模型则是数据的载体。使用装饰器为数据模型赋能,让它们焕发光彩。例如,Entity 装饰器标记了数据库实体,PrimaryGeneratedColumn 装饰器指定了主键,Column 装饰器定义了数据库列。

// User.entity.ts
@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

路由管理与装饰器:畅通无阻的 API

路由是 API 的交通要道,使用装饰器掌控路由,让请求顺利到达目的地。Controller 装饰器标识控制器,Get 和 Post 装饰器定义请求方式,Body 装饰器解析请求体数据。

// user.controller.ts
@Controller('user')
export class UserController {
  @Post()
  createUser(@Body() createUserDto: CreateUserDto) {
    // ...
  }

  @Get()
  findAll() {
    // ...
  }
}

JWT 验证与装饰器:多重保护,安全至上

保护 API 资源至关重要,JWT 验证守卫我们的 API。UseGuards 装饰器应用守卫,要求所有请求进行 JWT 验证,确保数据的安全。

// user.controller.ts
@UseGuards(JwtAuthGuard)
@Controller('user')
export class UserController {
  // ...
}

查询装饰器:数据库寻踪,轻而易举

数据库查询是后端开发的重中之重。Nest.js 提供了查询装饰器,使数据库操作变得轻而易举。Find 和 Where 装饰器帮你轻松获取数据。

// user.service.ts
@Injectable()
export class UserService {
  @InjectRepository(User)
  private userRepository: Repository<User>;

  async findAll(): Promise<User[]> {
    return this.userRepository.find();
  }
}

扬帆远航,探索 Nest.js 的无限可能

我们已经搭建了一个简约的后端应用,展示了 Nest.js 的强大功能。但装饰器之旅远不止于此,Nest.js 生态系统还有更多惊喜等待探索。

常见问题解答

  1. 什么是装饰器?
    装饰器是 JavaScript/TypeScript 中的特殊函数,用于增强类的行为和属性。

  2. Nest.js 中的装饰器有什么优势?
    Nest.js 装饰器简化了后端开发,提供了模块化和可复用代码,提高了开发效率。

  3. 哪些是 Nest.js 中最常用的装饰器?
    @Controller、@Get、@Post、@Entity、@PrimaryGeneratedColumn 等。

  4. 如何使用 JWT 验证保护 API?
    使用 @UseGuards(JwtAuthGuard) 装饰器为控制器或方法添加 JWT 验证。

  5. 查询装饰器有哪些?
    @Find、@Where、@OrderBy、@Select 等。

欢迎加入 Nest.js 的装饰器世界,开启一段迷人的后端开发之旅。