cozyapi

1.1.1 • Public • Published

CozyAPI: Simplify Your HTTP Server

  • 💜 Simplify Your Api Servers
  • 💜 Use Decorators (currently using Babel)
  • 💜 Generated OpenAPI.json for easy Swagger Setup

A https://hub.codehubby.com package to radically simplify your HTTP API setup using decorators.

CozyAPI after successful install

app.js:

import CozyApi from 'cozyapi'
const app = new CozyApi()

class MyApi {
    @app.get('/')
    async hello() {
         return {message: "Hello world! 🙏🏻🙌"}
    }
    @app.post('/')
    async postMeSomething(postData) {
         return {postData}
    }
    @app.post('/items/{item_id}')
    async postMeSomeItem(item_id, postData) {
         return {item_id, postData}
    }
}

Enabling Decorators in Pure JavaScript (2023-05)

You need a .babelrc file with the following contents:

{
  "presets": [
    ["@babel/env", {
      "targets": {
        "node": "current"
      }
    }]
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { version: "2023-01" }],
    "@babel/plugin-proposal-class-static-block",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread",
  ]
}

As well as a build script in your package.json and babel packages and run npm install after you updated your package.json file:

  "scripts": {
    "build": "babel *.js -d dist",
    "build-scripts": "babel ./scripts/*.js -d dist/scripts # (optional for custom /scripts folder)",
    "start": "npm run build && node dist/app.js"
  },
  "devDependencies": {
    "@babel/cli": "^7.21.5",
    "@babel/core": "^7.21.8",
    "@babel/plugin-proposal-class-static-block": "^7.21.0",
    "@babel/plugin-proposal-decorators": "^7.21.0",
    "@babel/plugin-syntax-top-level-await": "^7.14.5",
    "@babel/preset-env": "^7.21.5"
  }

Don't forget to run npm install after editing your package.json ;)!

OpenAPI + Swagger API

CozyApi automately generated an openapi.json file which you can use in a swagger api configuration such as this:

app.js:

import express from 'express';
import bodyParser from 'body-parser';
import swaggerUi from 'swagger-ui-express';
import fs from 'fs';

const app = express();
const port = 3000;

// Parse JSON bodies
app.use(bodyParser.json());

// Read the OpenAPI JSON file
const openapiDocument = JSON.parse(fs.readFileSync('./openapi.json', 'utf8'));

// Configure Swagger UI with dark layout

const swaggerUiOptions = {
  customCss: '.swagger-ui .topbar { background-color: #333; } body,.swagger-ui { background:#999;color:grey; }',
  customSiteTitle: 'My API Documentation',
};

// Serve Swagger UI at root endpoint
app.use('/', swaggerUi.serve, swaggerUi.setup(openapiDocument, swaggerUiOptions));

// Start the server
app.listen(port, () => {
  console.log(`Swagger UI server listening at http://localhost:${port}`);
});

.

Readme

Keywords

none

Package Sidebar

Install

npm i cozyapi

Weekly Downloads

7

Version

1.1.1

License

ISC

Unpacked Size

26.1 kB

Total Files

10

Last publish

Collaborators

  • neil-yoga