https://github.com/speedphp/typespeed-swagger
The Swagger plugin for the TypeSpeed framework.
https://github.com/speedphp/typespeed-swagger
Last synced: 27 days ago
JSON representation
The Swagger plugin for the TypeSpeed framework.
- Host: GitHub
- URL: https://github.com/speedphp/typespeed-swagger
- Owner: speedphp
- License: mit
- Created: 2023-06-13T07:15:42.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-07T09:22:09.000Z (over 2 years ago)
- Last Synced: 2025-11-12T07:20:33.929Z (8 months ago)
- Language: TypeScript
- Size: 88.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# typespeed-swagger
[](https://www.npmjs.com/package/typespeed)
[](https://github.com/SpeedPHP/typespeed/blob/main/LICENSE)
[](https://github.com/SpeedPHP/typespeed-swagger/commits/main)
[
](https://codecov.io/gh/SpeedPHP/typespeed-swagger)
**The Swagger plugin for the TypeSpeed framework.**
- **NO NEED** to add redundant annotations of methods and variables on existing web applications.
- **NO NEED** to add redundant definitions to any entity classes.
- **Simply** modify the import path of some decorators, then the application will have a complete and available swagger document page.
- Use advanced reflection ([typescript-rtti](https://github.com/typescript-rtti/typescript-rtti)) to get all the type, no extra markup required.
### Install
```
npm install typespeed-swagger typescript-rtti reflect-metadata
```
### How To Use
**First** modify the import path of these decorators from typespeed to typespeed-swagger: `@getMapping`, `@postMapping`, `@requestMapping`, `@reqBody`, `@reqQuery`, `@reqForm`, `@reqParam`.
For example:
```
import { log, component, getMapping, reqQuery } from "typespeed";
```
Would change to:
```
import { log, component } from "typespeed";
import { getMapping, reqQuery } from "typespeed-swagger";
```
**Second**, add swagger middleware to the main.ts entry file, as follows:
```
import { app, log, autoware, ServerFactory } from "typespeed";
import { swaggerMiddleware } from "typespeed-swagger";
@app
class Main {
@autoware
public server: ServerFactory;
public main() {
swaggerMiddleware(this.server.app, { path: "/docs", "allow-ip": ["127.0.0.1"] }, "./package.json");
this.server.start(8081);
}
}
```
After that, start the application, visit http://localhost:8081/docs, and you can see the swagger page.
### Configuration
Typespeed-swagger has three configurations, which are the last two optional parameters of the `swaggerMiddleware` function:
- The `path` property of the second parameter is the address configuration of the swagger page, and the default is `/docs`.
- The `allow-ip` property of the second parameter provides IP restrictions for secure access to the swagger page. Only the client IPs in the `allow-ip` array can access the page normally. Default is `["127.0.0.1", "::1"]`.
- The third parameter is the `package.json` file path of the project. Typespeed-swagger use the package.json file and read its name and version information for swagger page.
### Link
- **TypeSpeed Framework**
- **Swagger UI**
- **typescript-rtti**
### License
- [MIT](LICENSE) © speedphp