MS Vanilla ts API
MS Vanilla ts API is an Node.js based API setup that provides basic setup for the API creation.
Application uses:
- Node.js (express)
- Typescript
- PostgreSQL
- Swagger as API documentation
Project setup
This project was created using commands below:
- npm init -y
- npm install typescript -g
- tsc --init
- npm install concurrently nodemon
- mkdir ./src
- mkdir ./dist
tsconfig.json file was modified as:
"outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./src",
Then more dependencies and files needed for Node.js API to function were added as:
- touch ./src/index.ts
- npm i express @types/express
- npm i swagger-ui-express @types/swagger-ui-express swagger-jsdoc @types/swagger-jsdoc
- npm i body-parser @types/body-parser
- npm i @types/cors cors
- npm i log4js @types/log4js
[Config](https://www.npmjs.com/package/node-config-ts) module that enables reading different settings for different environments was added as:
-
npm i node-config-ts
-
mkdir ./config
-
touch ./config/default.json
-
edit package.json
and scripts for creating config.d.ts file (based on current value of node env variable. eg: test, dev), as well as other scripts were updated:
"scripts": {
"postinstall": "node-config-ts",
"start:build": "tsc -w",
"start:run": "nodemon dist/index.js",
"start": "concurrently npm:start:*"
},
"devDependencies": {
"@types/jest": "^25.2.1",
"@types/node": "^13.11.1",
"@types/supertest": "^2.0.8",
"jest": "^25.3.0",
"supertest": "^4.0.2",
"ts-jest": "^25.3.1",
"typescript": "^3.8.3"
}
Authentification
This project can use Okta (OktaJwtVerifier) or API Key for authentification. Okta: (https://www.npmjs.com/package/@okta/jwt-verifier)
Config files contain information about Okta client and Okta application which is used. Config files contain information about Api Keys.
List of public endpoints is defined in the config file.
Okta installation:
npm i @okta/jwt-verifier