UNPKG

@xapi-js/adaptor-nestjs

Version:
151 lines (115 loc) 4.4 kB
# @xapi-ts/adaptor-nestjs This package provides a NestJS adaptor for X-API data. ## Installation ```bash # npm npm install @xapi-ts/adaptor-nestjs # yarn yarn add @xapi-ts/adaptor-nestjs # pnpm pnpm add @xapi-ts/adaptor-nestjs # bun bun add @xapi-ts/adaptor-nestjs # deno deno add @xapi-ts/adaptor-nestjs ``` ## Usage `@xapi-ts/adaptor-nestjs` provides NestJS interceptors to automatically handle X-API request deserialization and response serialization. ### XapiRequestInterceptor Use `XapiRequestInterceptor` to automatically parse incoming `application/xml` requests into `XapiRoot` objects. ```typescript // app.controller.ts import { Controller, Post, UseInterceptors, Body } from '@nestjs/common'; import { XapiRoot } from '@xapi-ts/core'; import { XapiRequestInterceptor } from '@xapi-ts/adaptor-nestjs'; @Controller('xapi') export class AppController { @Post('/') @UseInterceptors(XapiRequestInterceptor) handleXapi(@Body() xapi: XapiRoot): XapiRoot { console.log('Received XapiRoot:', xapi.parameters.get('service')?.value); // Process the XapiRoot object const responseXapi = new XapiRoot(); responseXapi.addParameter({ id: 'result', value: 'success' }); return responseXapi; } } ``` ### XapiResponseInterceptor Use `XapiResponseInterceptor` to automatically serialize `XapiRoot` objects returned from your NestJS controllers into `application/xml` responses. ```typescript // app.controller.ts import { Controller, Post, UseInterceptors, Body } from '@nestjs/common'; import { XapiRoot } from '@xapi-ts/core import { XapiRequestInterceptor, XapiResponseInterceptor } from '@xapi-ts/adaptor-nestjs'; @Controller('xapi') export class AppController { @Post('/') @UseInterceptors(XapiRequestInterceptor, XapiResponseInterceptor) handleXapi(@Body() xapi: XapiRoot): XapiRoot { console.log('Received XapiRoot:', xapi.parameters.get('service')?.value); // Process the XapiRoot object const responseXapi = new XapiRoot(); responseXapi.addParameter({ id: 'result', value: 'success' }); return responseXapi; } } ``` --- # @xapi-ts/adaptor-nestjs 이 패키지는 X-API 데이터를 위한 NestJS 어댑터를 제공합니다. ## 설치 ```bash # npm npm install @xapi-ts/adaptor-nestjs # yarn yarn add @xapi-ts/adaptor-nestjs # pnpm pnpm add @xapi-ts/adaptor-nestjs # bun bun add @xapi-ts/adaptor-nestjs # deno deno add @xapi-ts/adaptor-nestjs ``` ## 사용법 `@xapi-ts/adaptor-nestjs`는 X-API 요청 역직렬화 및 응답 직렬화를 자동으로 처리하는 NestJS 인터셉터를 제공합니다. ### XapiRequestInterceptor 들어오는 `application/xml` 요청을 `XapiRoot` 객체로 자동 구문 분석하려면 `XapiRequestInterceptor`를 사용하십시오. ```typescript // app.controller.ts import { Controller, Post, UseInterceptors, Body } from '@nestjs/common'; import { XapiRoot } from '@xapi-ts/core'; import { XapiRequestInterceptor } from '@xapi-ts/adaptor-nestjs'; @Controller('xapi') export class AppController { @Post('/') @UseInterceptors(XapiRequestInterceptor) handleXapi(@Body() xapi: XapiRoot): XapiRoot { console.log('Received XapiRoot:', xapi.parameters.get('service')?.value); // XapiRoot 객체 처리 const responseXapi = new XapiRoot(); responseXapi.addParameter({ id: 'result', value: 'success' }); return responseXapi; } } ``` ### XapiResponseInterceptor NestJS 컨트롤러에서 반환된 `XapiRoot` 객체를 `application/xml` 응답으로 자동 직렬화하려면 `XapiResponseInterceptor`를 사용하십시오. ```typescript // app.controller.ts import { Controller, Post, UseInterceptors, Body } from '@nestjs/common'; import { XapiRoot } from '@xapi-ts/core import { XapiRequestInterceptor, XapiResponseInterceptor } from '@xapi-ts/adaptor-nestjs'; @Controller('xapi') export class AppController { @Post('/') @UseInterceptors(XapiRequestInterceptor, XapiResponseInterceptor) handleXapi(@Body() xapi: XapiRoot): XapiRoot { console.log('Received XapiRoot:', xapi.parameters.get('service')?.value); // XapiRoot 객체 처리 const responseXapi = new XapiRoot(); responseXapi.addParameter({ id: 'result', value: 'success' }); return responseXapi; } } ```