Here's a simple CloudFlare Worker with a built-in router that allows you to separate your worker logic into different functions and/or "controllers" so you can achieve a clean separation of concerns while working within the 1 script limit for non-Enterprise plans.
Sample route definitions:
router.get('/cloudflare', SampleController.index);
router.post('/cloudflare', SampleController.store);
router.get('/cloudflare/:id', SampleController.show);
router.put('/cloudflare/:id', SampleController.update);
router.delete('/cloudflare/:id', SampleController.destroy);
router.get('/cloudflare/routes/:id', (req) => {
return response('Response from closure instead of controller: id=' + req.params.id);
});
- src/index.js is your main CloudFlare Worker entrypoint. Update the routes in the file and point to your functions / controller.
- src/sample-controller.js contains an example of a basic controller
- src/router.js contains the basic router (feedback welcome)
- src/helpers.js contains some simple response/redirect helper functions
- src/http-method.js is just a simple enum for HTTP verbs.
Credits to Dave Willenberg and his Password pwnage CloudFlare Worker for the auto-deploy script and webpack config.
- Rename
example.cloudflare.env
tocloudflare.env
and edit the values as needed. - Update the index.js file with your routes, use function closures or separate controller files and go to town with a simple CloudFlare Worker with built-in routing!
- Install deps with
npm install
- Launch 🚀 with
npm run deploy
Try out the following routes from the sample repo live here:
- GET https://anderly.com/cloudflare/
- GET https://anderly.com/cloudflare/12345
- GET https://anderly.com/cloudflare/routes/12345
MIT