Skip to main content
Glama
documents.controller.ts5.31 kB
import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards, UseInterceptors, Logger, HttpCode, HttpStatus, Request, } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiParam, ApiQuery, ApiBearerAuth, } from '@nestjs/swagger'; import { JwtAuthGuard } from '../security/guards/jwt-auth.guard'; import { DocumentsService } from './services/documents.service'; import { CreateDocumentDto } from './dto/create-document.dto'; import { UpdateDocumentDto } from './dto/update-document.dto'; import { QueryDocumentDto } from './dto/query-document.dto'; import { DocumentResponseDto, DocumentDetailResponseDto, DocumentListResponseDto, } from './dto/document-response.dto'; @ApiTags('Documents') @Controller('documents') @UseGuards(JwtAuthGuard) @ApiBearerAuth() export class DocumentsController { private readonly logger = new Logger(DocumentsController.name); constructor(private readonly documentsService: DocumentsService) {} @Post() @HttpCode(HttpStatus.CREATED) @ApiOperation({ summary: '创建OpenAPI文档', description: '创建新的OpenAPI文档,文档内容将与当前用户关联', }) @ApiResponse({ status: HttpStatus.CREATED, description: '文档创建成功', type: DocumentDetailResponseDto, }) @ApiResponse({ status: HttpStatus.BAD_REQUEST, description: '请求参数无效或文档内容格式错误', }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '未授权访问', }) async create( @Request() req: any, @Body() createDocumentDto: CreateDocumentDto, ): Promise<DocumentDetailResponseDto> { const userId = req.user.id; this.logger.log(`Creating document for user ${userId}`); return this.documentsService.create(userId, createDocumentDto); } @Get() @ApiOperation({ summary: '获取用户文档列表', description: '获取当前用户的所有OpenAPI文档,支持分页、搜索和过滤', }) @ApiResponse({ status: HttpStatus.OK, description: '成功获取文档列表', type: DocumentListResponseDto, }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '未授权访问', }) async findAll( @Request() req: any, @Query() queryDto: QueryDocumentDto, ): Promise<DocumentListResponseDto> { const userId = req.user.id; this.logger.log(`Getting documents for user ${userId}`); return this.documentsService.findAll(userId, queryDto); } @Get(':id') @ApiOperation({ summary: '获取单个文档详情', description: '根据文档ID获取完整的文档信息,包括OpenAPI规范内容', }) @ApiParam({ name: 'id', description: '文档ID', example: '123e4567-e89b-12d3-a456-426614174000', }) @ApiResponse({ status: HttpStatus.OK, description: '成功获取文档详情', type: DocumentDetailResponseDto, }) @ApiResponse({ status: HttpStatus.NOT_FOUND, description: '文档不存在', }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '未授权访问', }) async findOne( @Request() req: any, @Param('id') id: string, ): Promise<DocumentDetailResponseDto> { const userId = req.user.id; this.logger.log(`Getting document ${id} for user ${userId}`); return this.documentsService.findOne(userId, id); } @Patch(':id') @ApiOperation({ summary: '更新文档', description: '更新指定ID的文档信息,只能更新属于当前用户的文档', }) @ApiParam({ name: 'id', description: '文档ID', example: '123e4567-e89b-12d3-a456-426614174000', }) @ApiResponse({ status: HttpStatus.OK, description: '文档更新成功', type: DocumentDetailResponseDto, }) @ApiResponse({ status: HttpStatus.BAD_REQUEST, description: '请求参数无效或文档内容格式错误', }) @ApiResponse({ status: HttpStatus.NOT_FOUND, description: '文档不存在', }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '未授权访问', }) async update( @Request() req: any, @Param('id') id: string, @Body() updateDocumentDto: UpdateDocumentDto, ): Promise<DocumentDetailResponseDto> { const userId = req.user.id; this.logger.log(`Updating document ${id} for user ${userId}`); return this.documentsService.update(userId, id, updateDocumentDto); } @Delete(':id') @HttpCode(HttpStatus.NO_CONTENT) @ApiOperation({ summary: '删除文档', description: '删除指定ID的文档,只能删除属于当前用户的文档', }) @ApiParam({ name: 'id', description: '文档ID', example: '123e4567-e89b-12d3-a456-426614174000', }) @ApiResponse({ status: HttpStatus.NO_CONTENT, description: '文档删除成功', }) @ApiResponse({ status: HttpStatus.NOT_FOUND, description: '文档不存在', }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '未授权访问', }) async remove( @Request() req: any, @Param('id') id: string, ): Promise<void> { const userId = req.user.id; this.logger.log(`Deleting document ${id} for user ${userId}`); return this.documentsService.remove(userId, id); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zaizaizhao/mcp-swagger-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server