AgentSkillsCN

backend-controller-pattern-nestjs

提供共享的 NestJS 控制器模式与设计原则。在使用 NestJS 实现控制器时,应优先选用此技能,以确保代码的一致性,并充分利用共享工具与实用程序。

SKILL.md
--- frontmatter
name: backend-controller-pattern-nestjs
description: Provides shared NestJS Controller patterns and principles. This skill should be used when implementing controllers in NestJS to ensure consistency and use of shared utilities.

NestJS Controller Patterns (General)

This skill covers the shared principles and common utilities applicable to ALL controller types in erify_api.

Specialized Patterns

For module-specific controller implementation, refer to:

Shared Principles

The following patterns apply across all controller types.

1. Response Serialization

ALL endpoints must use Zod for response serialization to ensure no internal data (like database IDs) leaks.

  • Use @ZodResponse(Schema, Status) for standard responses.
  • Use @ZodPaginatedResponse(Schema) for list endpoints.
typescript
@Get(':id')
@ZodResponse(UserDto)
async getUser(...)

2. Validation Pipes

Always use UidValidationPipe for validating uid parameters.

typescript
@Param('id', new UidValidationPipe(UserService.UID_PREFIX, 'User'))
id: string

3. DTO Standards

  • Request DTOs: Define validation rules using zod.
  • Response DTOs: Define output shape, excluding sensitive fields.
  • Pagination: Use PaginationQueryDto from @/lib/pagination/pagination.schema.

4. HTTP Status Codes

MethodSuccess CodeDecorator Implementation
GET200 OKDefault / @ZodResponse(S, HttpStatus.OK)
POST201 Created@ZodResponse(S, HttpStatus.CREATED)
PATCH200 OK@ZodResponse(S, HttpStatus.OK)
DELETE204 No Content@ZodResponse(undefined, HttpStatus.NO_CONTENT)

Checklist

  • Choose the correct specialized pattern (Admin, Me, Backdoor, Integration).
  • Use Zod serialization for ALL outputs.
  • Use UidValidationPipe for all UIDs.
  • Document all endpoints with Swagger/OpenAPI decorators (handled via @ZodResponse automatically where possible).