Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stbestichhh/raito-expressjs
API and middleware for expressjs to communicate with raito-cache server
https://github.com/stbestichhh/raito-expressjs
Last synced: about 1 month ago
JSON representation
API and middleware for expressjs to communicate with raito-cache server
- Host: GitHub
- URL: https://github.com/stbestichhh/raito-expressjs
- Owner: stbestichhh
- License: mit
- Created: 2024-12-16T08:03:38.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2024-12-16T08:21:38.000Z (about 1 month ago)
- Last Synced: 2024-12-16T09:24:50.166Z (about 1 month ago)
- Language: TypeScript
- Size: 42 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
[![NPM Version](https://img.shields.io/npm/v/@raito-cache/expressjs)](https://www.npmjs.com/package/@raito-cache/expressjs)
[![Node.js CI](https://github.com/stbestichhh/raito-expressjs/actions/workflows/node.js.yml/badge.svg)](https://github.com/stbestichhh/raito-expressjs/actions/workflows/node.js.yml)
[![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)
[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)# raito-expressjs
## Table of contents
* [Description](#about)
* [Getting started](#getting-started)
* [API](#api)
* [Deployment](#deployment)
* [Contributing](#contributing)
* [Changelog](#changelog)
* [Authors](#authors)
* [License](#license)## About
**raito-expressjs** - is an express.js middleware and API for communicating with **[Raito](https://github.com/stbestichhh/raito-cache) cache server**.
## Getting started
> [!IMPORTANT]
> **Node.js 18.x+** version must be installed in your OS.#### 1. Install server
```shell
$ yarn add express
$ yarn add @raito-cache/expressjs
```#### 2. Connect to Raito
```typescript
import { Raito } from '@raito-cache/expressjs';const raito = new Raito(); // defaul connection is localhost:9180
```#### 3. Use middleware
```typescript
import { cacheResponse } from '@raito-cache/expressjs'app.get('/api/route', cacheResponse());
```## API
### Connect to Raito
```typescript
new Raito(); // Connect to localhost:9180
new Raito(7180); // localhost:7180
new Raito('raito://localhost:9180'); // localhost:9180
new Raito('raito://localhost:9180?ttl=5000'); // localhost:9180 and ttl 5s
new Raito({
port: 9180, // Raito port
host: 'localhost', // Raito host
ttl: 10000, // Cache records time to live
});
```### Usage
**Raito class**
```typescript
import { Raito } from '@raito-cache/expressjs';const raito = new Raito();
await raito.set('key', { data: 'some data' }); // Create new record
await raito.set('key2', 'other data', 15000); // Create new record with 15s ttlawait raito.get('key2'); // Output: { key: 'key', data: 'other data', createdAt: Date, ttl: 15000 }
await raito.clear('key'); // Deletes recordawait raito.shutdown(); // Close connection
```**Express.js middleware**
```typescript
import { cacheResponse } from '@raito-cache/expressjs'
import { Raito } from '@raito-cache/expressjs';const raito = new Raito();
app.get('/api/route', cacheResponse()); // Caches responses
app.get('/api/timeSensetive/data', cacheResponse(15000)); // Cache response with setting record ttl
```## Raito Deployment
1. Pull docker image:
```shell
$ docker pull stbestich/raito-cache:latest
```
2. Run it
```shell
$ docker run -e HOST= -p :9180 -it stbestich/raito-cache
```#### Use with docker-compose
```yaml
services:
raito-cache:
image: stbestich/raito-cache:latest
ports:
- "${PORT:-9180}:${PORT:-9180}"
- "${PORT:-9181}:${PORT:-9181" # Define second port if you need http proxy
env_file:
- .env
environment:
NODE_ENV: production
PORT: ${PORT:-9180}
HOST: ${HOST:-0.0.0.0}
TTL: ${TTL}
tty: true
stdin_open: true
```## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
## Changelog
Project changes are writen in changelog, see the [CHANGELOG.md](CHANGELOG.md).
We use [SemVer](https://semver.org/) for versioning.
For the versions available, see the [tags](https://github.com/stbestichhh/raito-expressjs/tags) on this repository.
For the versions supported, see the [SECURITY.md](SECURITY.md).## Authors
- [@stbestichhh](https://www.github.com/stbestichhh)
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE)