@xapi-js/adaptor-nestjs
Version:
NestJS adaptor for X-API.
151 lines (115 loc) • 4.4 kB
Markdown
# @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;
}
}
```