From c9e237b1239966a4178bfe2b94a262f77fb4b436 Mon Sep 17 00:00:00 2001 From: Tobias Schneider Date: Sat, 13 Feb 2021 01:54:10 +0100 Subject: [PATCH] added readme and another tag --- README.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5451fb1 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# Cloudflare Workers Router + +Cloudflare Workers Router is a super lightweight router (3.6 kB) with middleware support and ZERO dependencies for CloudFlare Workers, inspired by the express.js syntax. + +When I was trying out Cloudflare Workers I almost immediately noticed how fast it was compared to other serverless offerings. So I wanted to build a full fledged API to see how it performs doing real work, but since I wasn't able to find a router that suited my needs I created my own. + +## Contents + +- [Usage](#usage) +- [Setup](#setup) + + +## Usage + +### Simple Example + +```javascript +const Router = require('@tsndr/cloudflare-worker-router') +const router = new Router() + +// Enabling buildin CORS support +router.cors() + +// Simple get +router.get('/user', (req, res) => { + + res.body = { + data: { + id: 1, + name: 'John Doe' + } + } +}) + +// Post route with url parameter +router.post('/user/:id', (req, res) => { + + const userId = req.params.id + + // Do stuff... + + if (errorDoingStuff) { + res.status = 400 + res.body = { + error: 'User did stupid stuff!' + } + return + } + + res.status = 204 +}) + +// Delete route using a middleware +router.delete('/user/:id', (req, res, next) => { + + if (!apiTokenIsCorrect) { + res.status = 401 + return + } + + await next() +}, (req, res) => { + + const userId = req.params.id + + // Do stuff... +}) + +// Listen Cloudflare Workers Fetch Event +addEventListener('fetch', event => { + event.respondWith(router.handle(event)) +}) +``` + + +## Setup + +### Wrangler + +You can use [wrangler](https://github.com/cloudflare/wrangler) to generate a new Cloudflare Workers project based on this router by running the following command from your terminal: + +``` +wrangler generate myapp https://github.com/tsndr/cloudflare-worker-router-template +``` + +Before publishing your code you need to edit `wrangler.toml` file and add your Cloudflare `account_id` - more information about publishing your code can be found [in the documentation](https://developers.cloudflare.com/workers/learning/getting-started). + +Once you are ready, you can publish your code by running the following command: + +``` +wrangler publish +``` + +You can also test it loacally by running the following command: + +``` +wrangler dev +``` + + +### npm + +If you already have a wrangler project you can install the router like this: + +``` +npm i @tsndr/cloudflare-worker-router +``` + + +### Serverless + +To deploy using serverless add a [`serverless.yml`](https://serverless.com/framework/docs/providers/cloudflare/) file. diff --git a/package.json b/package.json index b1f43d4..4ecd759 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "middleware", "router", "routing", - "worker" + "worker", + "workers" ], "author": "Tobias Schneider", "license": "MIT",