# @lakutata-module/api

> Lakutata API Module

Latest version **1.0.29** (published 2022-12-01) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @lakutata-module/api
pnpm add @lakutata-module/api
yarn add @lakutata-module/api
bun add @lakutata-module/api
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.0.29 |
| Published | 2022-12-01 |
| First published | 2021-07-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=12.22.1 |
| Dependencies | 12 |
| Unpacked size | 446.8 KB |
| Known vulnerabilities | 0 (+13 in 4 direct dependencies) |
| Install scripts | no |
| Author | alex.ma |
| Maintainers | myq1991 |
| Keywords | lakutata, api |

## Links

- npm: https://www.npmjs.com/package/@lakutata-module/api
- Repository: https://gitee.com/nnxr/lakutata-module-api
- npm.io page: https://npm.io/package/@lakutata-module/api

## Dependencies (12)

- [glob](https://npm.io/package/glob.md) ^7.2.0
- [fastify](https://npm.io/package/fastify.md) ^4.10.2
- [hyperid](https://npm.io/package/hyperid.md) ^3.0.1
- [short-uuid](https://npm.io/package/short-uuid.md) ^4.2.2
- [sort-array](https://npm.io/package/sort-array.md) ^4.1.5
- [@fastify/cors](https://npm.io/package/@fastify/cors.md) ^8.2.0
- [fastify-plugin](https://npm.io/package/fastify-plugin.md) ^4.3.0
- [@fastify/static](https://npm.io/package/@fastify/static.md) ^6.5.1
- [fast-xml-parser](https://npm.io/package/fast-xml-parser.md) ^4.0.12
- [reflect-metadata](https://npm.io/package/reflect-metadata.md) ^0.1.13
- [@fastify/formbody](https://npm.io/package/@fastify/formbody.md) ^7.0.1
- [@fastify/multipart](https://npm.io/package/@fastify/multipart.md) ^7.3.0

## Recent versions

- 1.0.29 (latest) — 2022-12-01
- 1.0.28 — 2022-10-26
- 1.0.27 — 2022-10-13
- 1.0.26 — 2022-08-28
- 1.0.25 — 2022-06-22
- 1.0.23 — 2022-06-22
- 1.0.22 — 2022-06-22
- 1.0.21 — 2022-06-21
- 1.0.20 — 2022-06-21
- 1.0.19 — 2022-06-21
- 1.0.18 — 2022-05-10
- 1.0.17 — 2022-05-08
- 1.0.16 — 2022-05-07
- 1.0.15 — 2022-05-07
- 1.0.14 — 2022-05-07
- … 14 more at https://npm.io/package/@lakutata-module/api/versions

## README

<div style="text-align:center">
	<img src="https://gitee.com/nnxr/lakutata-module-api/raw/master/assets/lakutata-banner.png" />
</div>

[![NPM Version](https://img.shields.io/npm/v/@lakutata-module/api?color=informational&style=flat-square)](https://npmjs.org/package/@lakutata-module/api)
[![NODE Version](https://img.shields.io/node/v/@lakutata-module/api?color=informational&style=flat-square)](https://npmjs.org/package/@lakutata-module/api)
[![Known Vulnerabilities](https://snyk.io/test/npm/@lakutata-module/api/badge.svg?style=flat-square)](https://snyk.io/test/npm/@lakutata-module/api)
[![NPM Download](https://img.shields.io/npm/dm/@lakutata-module/api?style=flat-square)](https://npmjs.org/package/@lakutata-module/api)

## Quickstart

#### Controller Example

```typescript
@Middleware(async (app,request,response)=>{
    console.log('This is controller middleware')
    request.query.middlewareTest='OK'
})
@Controller()
export class TestController extends BaseController {
    @GET()
    public async getTest(@RequestId() id, @Query() query, @Body() ooo, @Req() request, @Res() response, @Header('test') header) {
        return {name: 'getTest', age: 12234}
    }

    @POST()
    public async postTest(request, response) {
        return {name: 'postTest'}
    }

    @DOWNLOAD()
    public async download(@Req() req) {
        return new DownloadFile('./testPPT.pptx')
    }

    @CONTROLLER(TestController1)
    public async testSubController() {
        console.log('Go to test controller 1')
    }

}
```

#### Usage

```typescript
createApp({
    id: 'api.test.app',
    name: 'api-test-app',
    modules: {
        test: {
            class: API,
            logger: true,
            signType: 'SHA1',
            port: 8080,
            controllers: [
                `${path.resolve(__dirname, './controllers')}/**/*`
            ]
        }
    }
}).then(app => {
    app.Logger.info('API is running')
}).catch(e => {
    console.error(e)
})

```

> @lakutata/core required.

## Documentations

#### Module Options

```typescript
const moduleOptions:{
    port?: number
    controllers?: string | string[]
    ignoreTrailingSlash?: boolean
    maxParamLength?: number
    bodyLimit?: number
    onProtoPoisoning?: 'error' | 'remove' | 'ignore'
    onConstructorPoisoning?: 'error' | 'remove' | 'ignore'
    logger?: boolean | Logger
    connectionTimeout?: number
    keepAliveTimeout?: number
    multipart?: {
        addToBody?: boolean
        throwFileSizeLimit?: boolean
        limits?: {
            fieldNameSize?: number
            fieldSize?: number
            fields?: number
            fileSize?: number
            files?: number
            headerPairs?: number
        }
    },
    cors?: {
        origin?: boolean | string | string[] | RegExp
        methods?: string | string[]
        allowedHeaders?: string | string[]
        exposedHeaders?: string | string[]
        credentials?: boolean
        maxAge?: number
        preflightContinue?: boolean
        optionsSuccessStatus?: number
        preflight?: boolean
        strictPreflight?: boolean
        hideOptionsRoute?: boolean
    }
    signType?: 'MD5' | 'SHA1' | 'SHA3' | 'SHA224' | 'SHA256' | 'SHA384' | 'SHA512'
    responseFormatter?: (payload: TFormattedPayload, hasError: boolean) => { [prop: string]: any } | Promise<{ [prop: string]: any }>
}
```

## How to Contribute

Please let us know how can we help. Do check out [issues](https://gitee.com/nnxr/lakutata-module-api/issues) for bug reports or suggestions first.

## License

[MIT](LICENSE)

---
_Source: https://npm.io/package/@lakutata-module/api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
