h4 0.0.5 copy "h4: ^0.0.5" to clipboard
h4: ^0.0.5 copied to clipboard

A minimal HTTP framework for building elegant server applications.

H4. #

og

H4 is a lightweight, minimal, and blazing fast HTTP framework for productive and fun API development with dart.

H4 is a new framework under active development. It's not yet ready for production use.

Features #

  • Lightweight: H4 is designed to be minimal and easy to get started with.
  • Fast: H4's trie-based router is incredibly fast, with support for route params and wildcard patterns.
  • Middleware: H4 comes with built-in onRequest and onError middleware.
  • Error Handling: H4's createError exception makes it easy to handle and respond to errors.

Getting Started #

Add H4 to your pubspec.yaml:

dependencies:
  h4: ^1.0.0

Or install with dart pub get

dart pub add h4

Import the library and start building your server:

import 'package:h4/create.dart';

void main() {
 var app = createApp();
 var router = createRouter();

 app.use(router);

 router.get("/", (event) => "Hello world!");
}

Examples #

Routing with Params #

You can define parameters in your routes using : prefix:

router.get('/users/:id', (event) {
 final userId = event.params['id'];
 return 'User $userId'
});

Middleware #

H4 provides two middleware functions. Do not return anything from middleware as this will terminate the request.

app.onRequest((event) {
 print('Incoming request method: ${event.method}');
});

app.onError((error) {
 print("$error");
});

Error Handling #

You can throw a create error Exception that will terminate the request and send a 400 - Bad Request response

router.get('/error', (event) {
 throw CreateError(message: 'Something went wrong', errorCode: 400);
});

The client recieves this json payload -

{
 "status": 400,
 "message": "An error ocurred"
}

Wildcard Routing #

// Matches 'articles/page' and '/articles/otherPage' but not 'articles/page/otherPage'
router.get('/articles/*', (event) {
 final path = event.path;
 return 'The tea is teaing!!'
});
// Matches 'articles/foo/bar' and 'articles/rice/eba/beans'
router.get('/articles/**', (event) {
 final path = event.path;
 return 'The tea is teaing!!'
});

Contributing #

We are looking for contributors!

There's still quite a bit of work to do to get H4 to 1.0.0 and ready for production use.

If you find a bug or have an idea for a new feature, please open an issue or submit a pull request.

Code of Conduct. #

Everyone is welcome here! Good vibes only. Show respect and consideration for others when creating issues and contributing to the library.

3
likes
0
points
16
downloads

Publisher

unverified uploader

Weekly Downloads

A minimal HTTP framework for building elegant server applications.

Repository (GitHub)
View/report issues

Topics

#http #server #api

License

unknown (license)

Dependencies

compute, either_dart, logging, meta

More

Packages that depend on h4