【NestJS】Responseデータの形式をInterceptorでいい感じに変換する方法
6383 ワード
概要
APIエンドポイント
から返却されるレスポンスデータの形式をInterceptor
で変換した
{
"message": "success",
"statusCode": 200,
"errors": ""
}
Interceptor
を定義する
transform.interceptor.ts
import {Injectable, NestInterceptor, ExecutionContext, CallHandler} from '@nestjs/common';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
// オブジェクトのexport
export const Info = {
statusCode: 200,
message: 'success'
}
/**
* export type 型エイリアスのexport
* オブジェクトの値のユニオン型を作成
* typeof xxx & 型定義をマージして返却
*/
export type Response<T> = typeof Info & {
data: T
}
/**
* Object.assign で空オブジェクトに指定した形式で代入
*/
@Injectable()
export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
return next.handle().pipe(map(data => Object.assign({}, Info, {data})));
}
}
定義したInterceptor
をmain.ts
で読み込む
コア関数NestFactoryを使用してNestアプリケーションのインスタンスを生成するアプリケーションのエントリファイルです。
transform.interceptor.ts
import {Injectable, NestInterceptor, ExecutionContext, CallHandler} from '@nestjs/common';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
// オブジェクトのexport
export const Info = {
statusCode: 200,
message: 'success'
}
/**
* export type 型エイリアスのexport
* オブジェクトの値のユニオン型を作成
* typeof xxx & 型定義をマージして返却
*/
export type Response<T> = typeof Info & {
data: T
}
/**
* Object.assign で空オブジェクトに指定した形式で代入
*/
@Injectable()
export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
return next.handle().pipe(map(data => Object.assign({}, Info, {data})));
}
}
Interceptor
をmain.ts
で読み込む
コア関数NestFactoryを使用してNestアプリケーションのインスタンスを生成するアプリケーションのエントリファイルです。
The entry file of the application which uses the core function NestFactory to create a Nest application instance.
main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
logger: loggerFactory.useFactory('warn'),
})
app.useGlobalInterceptors(new TransformInterceptor())
}
Author And Source
この問題について(【NestJS】Responseデータの形式をInterceptorでいい感じに変換する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/naoki-haba/items/18923e0d164fa8f9a2ab著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .