Commit 6e516f49 authored by nanahira's avatar nanahira

better api

parent 00f2fe5c
Pipeline #3391 passed with stages
in 4 minutes and 59 seconds
...@@ -10,34 +10,39 @@ import { ...@@ -10,34 +10,39 @@ import {
import { AppService, ScoreSheetData } from './app.service'; import { AppService, ScoreSheetData } from './app.service';
import { Response } from 'express'; import { Response } from 'express';
import { import {
CxcyReturnMessage, CxcyReturnMessageDto,
CxcyReturnMessageLike, CxcyReturnMessageLike,
} from './messages/CxcyReturnMessage'; } from './messages/CxcyReturnMessage.dto';
import { import {
ApiBadRequestResponse, ApiBadRequestResponse,
ApiHeader, ApiHeader,
ApiInternalServerErrorResponse, ApiInternalServerErrorResponse,
ApiOkResponse, ApiOkResponse,
ApiOperation,
ApiQuery, ApiQuery,
ApiTags, ApiTags,
} from '@nestjs/swagger'; } from '@nestjs/swagger';
@Controller('api') @Controller('api')
@ApiTags('user')
export class AppController { export class AppController {
constructor(private readonly appService: AppService) {} constructor(private readonly appService: AppService) {}
@Get('user/report.pdf') @Get('user/report.pdf')
@ApiTags('user') @ApiOperation({
summary: '生成报告',
description: '生成学生的创新创业电子报告。',
})
@ApiHeader({ name: 'Authorization', description: '用户 token' }) @ApiHeader({ name: 'Authorization', description: '用户 token' })
@ApiQuery({ name: 'request_id', description: '请求 id,直接返回。' }) @ApiQuery({ name: 'request_id', description: '请求 id,直接返回。' })
@ApiOkResponse({ description: '成功,会直接提供文件下载。' }) @ApiOkResponse({ description: '成功,会直接提供文件下载。' })
@ApiBadRequestResponse({ @ApiBadRequestResponse({
description: '用户不存在或者没有登录。', description: '用户不存在或者没有登录。',
type: CxcyReturnMessage, type: CxcyReturnMessageDto,
}) })
@ApiInternalServerErrorResponse({ @ApiInternalServerErrorResponse({
description: '报告生成过程中出现问题。', description: '报告生成过程中出现问题。',
type: CxcyReturnMessage, type: CxcyReturnMessageDto,
}) })
async getPdf( async getPdf(
@Headers('Authorization') userToken: string, @Headers('Authorization') userToken: string,
...@@ -46,7 +51,7 @@ export class AppController { ...@@ -46,7 +51,7 @@ export class AppController {
res: Response, res: Response,
) { ) {
if (!userToken) { if (!userToken) {
new CxcyReturnMessage( new CxcyReturnMessageDto(
requestId, requestId,
401, 401,
'Empty user token.', 'Empty user token.',
...@@ -63,7 +68,7 @@ export class AppController { ...@@ -63,7 +68,7 @@ export class AppController {
return; return;
} }
if (!data.data || !data.data.user) { if (!data.data || !data.data.user) {
new CxcyReturnMessage( new CxcyReturnMessageDto(
requestId, requestId,
401, 401,
'Some contents missing.', 'Some contents missing.',
......
...@@ -5,9 +5,9 @@ import * as fs from 'fs'; ...@@ -5,9 +5,9 @@ import * as fs from 'fs';
import mdToPdf from 'md-to-pdf'; import mdToPdf from 'md-to-pdf';
import axios from 'axios'; import axios from 'axios';
import { import {
CxcyReturnMessage, CxcyReturnMessageDto,
CxcyReturnMessageLike, CxcyReturnMessageLike,
} from './messages/CxcyReturnMessage'; } from './messages/CxcyReturnMessage.dto';
export interface NameWise { export interface NameWise {
name: string; name: string;
...@@ -52,7 +52,7 @@ export class AppService { ...@@ -52,7 +52,7 @@ export class AppService {
return data; return data;
} catch (e) { } catch (e) {
this.log.error(`Failed to request backend ${url}: ${e.toString()}`); this.log.error(`Failed to request backend ${url}: ${e.toString()}`);
return new CxcyReturnMessage( return new CxcyReturnMessageDto(
requestId, requestId,
500, 500,
'backend request fail', 'backend request fail',
......
...@@ -7,11 +7,11 @@ export interface CxcyReturnMessageLike<T> { ...@@ -7,11 +7,11 @@ export interface CxcyReturnMessageLike<T> {
timestamp: number; timestamp: number;
request_id: string; request_id: string;
status_code: number; status_code: number;
message: string; message?: string;
data: T; data?: T;
} }
export class CxcyReturnMessage<T> implements CxcyReturnMessageLike<T> { export class CxcyReturnMessageDto<T> implements CxcyReturnMessageLike<T> {
@ApiProperty({ description: '是否成功' }) @ApiProperty({ description: '是否成功' })
success: boolean; success: boolean;
@ApiProperty({ description: '请求日期' }) @ApiProperty({ description: '请求日期' })
...@@ -21,14 +21,14 @@ export class CxcyReturnMessage<T> implements CxcyReturnMessageLike<T> { ...@@ -21,14 +21,14 @@ export class CxcyReturnMessage<T> implements CxcyReturnMessageLike<T> {
@ApiProperty({ description: '状态码' }) @ApiProperty({ description: '状态码' })
public status_code: number; public status_code: number;
@ApiProperty({ description: '提示信息' }) @ApiProperty({ description: '提示信息' })
public message: string; public message?: string;
@ApiProperty({ description: '返回内容' }) @ApiProperty({ description: '返回内容' })
public data: T; public data?: T;
constructor( constructor(
request_id: string, request_id: string,
status_code: number, status_code: number,
message: string, message?: string,
data: T, data?: T,
) { ) {
this.request_id = request_id; this.request_id = request_id;
this.status_code = status_code; this.status_code = status_code;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment