Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Koatty/koatty
Koa2 + Typescript = Koatty. Use Typescript's decorator implement IOC and AOP.
https://github.com/Koatty/koatty
aop auto-injection grpc grpc-server http http2 https ioc koa koa2 middleware rpc springboot typescript typescript-decorator websocket ws
Last synced: about 1 month ago
JSON representation
Koa2 + Typescript = Koatty. Use Typescript's decorator implement IOC and AOP.
- Host: GitHub
- URL: https://github.com/Koatty/koatty
- Owner: Koatty
- License: bsd-3-clause
- Created: 2018-04-28T16:44:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-30T01:51:30.000Z (about 1 month ago)
- Last Synced: 2024-10-30T04:00:47.713Z (about 1 month ago)
- Topics: aop, auto-injection, grpc, grpc-server, http, http2, https, ioc, koa, koa2, middleware, rpc, springboot, typescript, typescript-decorator, websocket, ws
- Language: TypeScript
- Homepage: https://koatty.org/
- Size: 3.58 MB
- Stars: 124
- Watchers: 2
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-star - koatty
- awesome-koa - koatty - Koa2 + Typescript = Koatty。使用Typescript装饰器实现了控制反转和面向切面编程。 ![](https://img.shields.io/github/stars/Koatty/koatty.svg?style=social&label=Star) ![](https://img.shields.io/npm/dm/koatty.svg?style=flat-square) (仓库 / 框架)
README
# koatty
Koa2 + Typescript + IOC = koatty.
Use Typescript's decorator implement IOC and AOP.
[![Version npm](https://img.shields.io/npm/v/koatty.svg?style=flat-square)](https://www.npmjs.com/package/koatty)[![npm Downloads](https://img.shields.io/npm/dm/koatty.svg?style=flat-square)](https://npmcharts.com/compare/koatty?minimal=true)
## New features
* HTTP、HTTPS、HTTP2、gRPC、WebSocket server.✔️
* Support loading environment configuration, parsing command line parameters (process.argv) and environment variables (process.env).✔️
* `@ExceptionHandler()` Register global exception handling.✔️
* graceful shutdown and pre-exit event.✔️
* custom decorator based on app events.✔️
* GraphQL supporting. 💪
* Multi-protocol server. 💪## Documentation
[koatty_doc_CN](https://koatty.org/) (In progress💪)
## Installation CLI tools
```shell
npm i -g koatty_cli
```## Quick Start
### 1.Create Project
```shell
kt new projectName```
### 2. Install deps
```
cd ./projectNamenpm i
```### 3. Start up
```
npm run dev// or
npm start
```## Code style
default Controller:
```javascript
import { Controller, Autowired, GetMapping, RequestBody, PathVariable,
PostMapping, RequestMapping, RequestMethod, Valid, Output } from "koatty";
import { TestDTO } from "../model/dto/TestDTO";
import { TestService } from "../service/TestService";
import { App } from "../App";@Controller()
export class IndexController {
app: App;
ctx: KoattyContext;@Autowired()
private testService: TestService;/**
* constructor
*
*/
constructor(ctx: KoattyContext) {
this.ctx = ctx;
}@RequestMapping("/:name", RequestMethod.ALL)
async default(@PathVariable("name") @Valid("IsNotEmpty") name: string) {
try {
const info = await this.testService.sayHello(name);
return Output.ok(this.ctx, "success", info);
} catch (err: Error) {
return Output.fail(this.ctx, err.message));
}
}@PostMapping("/test")
@Validated() //need DTOClass
test(@RequestParam() params: TestDTO) {
return Output.ok(this.ctx, "test", params);
}
}
```## How to do Unit Testing
>only support `jest` UT framework now
```javascript
import request from 'supertest';
import { ExecBootStrap } from 'koatty';
import { App } from '../src/App';describe('UT example', () => {
let server: any;
beforeAll(async () => {
jest.useFakeTimers();
const appInstance = await ExecBootStrap()(App);
server = await appInstance.listen();
});afterAll(done => {
server.close();
done();
});it('request', async () => {
const rsp = await request(server).get('/');
expect(rsp.status).toBe(200);
});
});```
## How to debug
if you use vscode , edit the `.vscode/launch.json` , like this:
```
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "TS Program",
"args": [
"${workspaceRoot}/src/App.ts"
],
"runtimeArgs": [
"--nolazy",
"-r",
"ts-node/register"
],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"outputCapture": "std",
"internalConsoleOptions": "neverOpen"
}
]
}
```
Select `TS Program` to debug run. Try to call `http://localhost:3000/` .## Example
Check out the [quick start example][quick-example].
[quick-example]: https://github.com/Koatty/koatty_template