- 0.2.0Latest
- 0.1.63
- 0.1.62
- 0.1.61
- 0.1.60
- 0.1.59
- 0.1.58
- 0.1.57
- 0.1.56
- 0.1.55
- 0.1.54
- 0.1.53
- 0.1.52
- 0.1.51
- 0.1.50
- 0.1.49
- 0.1.48
- 0.1.47
- 0.1.46
- 0.1.45
- 0.1.44
- 0.1.43
- 0.1.42
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.38
- 0.1.37
- 0.1.36
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
Cargo - Deliver data fast, simple and secure!
This is a first implementation of a framework which supports you in set up APIs. In the first version it allows you to handle incoming http requests and process them with middleware, on app and route level. Please do not use it in production yet!
How to use
Create a main.ts
file, import and call Cargos bootstrap function and add
required routes to the Applications:
// main.ts
import { bootstrap, Get } from "https://deno.land/x/cargo@0.1.0/core/mod.ts";
const App = await bootstrap();
Get("/hello", (ctx) => {
return new Response("World!");
});
App.run();
Run the application with deno run --allow-net --allow-read main.ts
and open
http://localhost:8000/hello
in your browser.
Routing
You can call the route creation functions (Get()
, Post()
Put()
, Patch()
,
Delete()
) everywhere in your code. However we do recommend to add your routes
into files in the routes
folder. All .ts
file in this folder are loaded
automatically during Cargos bootstrap process. This approach allows you to
organise and manage the routes in 1 single place.
Create a new folder routes
in your projects root folder and add a new
index.ts
file
// routes/index.ts
import { Post } from "https://deno.land/x/cargo@0.1.0/core/mod.ts";
Post("/hello", (ctx) => {
return new Response("World!");
});
After reloading the application with the
deno run --allow-net --allow-read main.ts
command you will have the post route
available for making requests.
Middleware
Middleware allows you to do some work before and after the definitive route handler is called.
A simple example is to log the time for handling our incoming request. In your
main.ts
add the following middleware:
// main.ts
import { bootstrap, Get } from "https://deno.land/x/cargo@0.1.0/core/mod.ts";
const App = await bootstrap();
// Middleware on app level
App.link((ctx, next) => {
const startTime = Date.now();
// Calling the next function will continue with the middleware chain and wait for the response.
const response = await next(ctx);
const endTime = Date.now();
// Log the time difference before and after calling the next function ms.
console.log(endTime - startTime);
return response;
});
const HelloRoute = Get("/hello", (ctx) => {
return new Response("World!");
});
// Middleware on route level
HelloRoute.link((ctx, next) => {
// Doing work before the request is handled by the route.
const response = await next(ctx);
// Doing work after the request is handled by the route.
return response;
});
App.run();
Licence
MIT License
Contact
Feel free submit issues or reach out to me for any suggestions at daniel.steuri@flowingones.ch