The Protevus Platform: Unified Full-Stack Development https://protevus.com
Find a file
2016-04-16 23:07:59 -04:00
.idea/libraries Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00
lib Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00
test Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00
.gitignore Modified README 2016-03-03 23:35:59 -05:00
LICENSE Initial commit 2016-03-03 21:32:12 -05:00
pubspec.yaml Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00
README.md Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00
Test Results - Run_All_Tests.html Entering beta. JSON God dep removed, ironically. 2016-04-16 23:07:59 -04:00

Body Parser

version 1.0.0-beta

NOT YET PRODUCTION READY

Parse request bodies and query strings in Dart. No external dependencies required.

Contents

About

I needed something like Express.js's body-parser module, so I made it here. It fully supports JSON requests. x-www-form-urlencoded is partially supported, as well as query strings. By the next update, they will be fully supported. The only missing link in the implementation is that I have not yet provided support for arrays in the query. File upload support will also be present by the production 1.0.0 release.

A benefit of this is that primitive types are automatically deserialized correctly. As in, if you have a hello=1.5 request, then body['hello'] will equal 1.5 and not '1.5'. A very semantic difference, yes, but it relieves stress in my head.

Installation

To install Body Parser for your Dart project, simply add body_parser to your pub dependencies.

dependencies:
    body_parser: any

Usage

Body Parser exposes a simple class called [BodyParseResult]. You can easily parse the query string and request body for a request by calling Future<BodyParseResult> parseBody.

import 'dart:convert';
import 'package:body_parser/body_parser.dart';

main() async {
    // ...
    await for (HttpRequest request in server) {
      request.response.write(JSON.encode(await parseBody(request).body));
      await request.response.close();
    }
}

You can also use buildMapFromUri(Map, String) to populate a map from a URL encoded string.

This can easily be used with a library like JSON God to build structured JSON/REST APIs. Add validation and you've got an instant backend.

MyClass create(HttpRequest request) async {
    God god = new God();
    return god.deserialize(await parseBody(request).body, MyClass);
}

Thank you for using Body Parser

Thank you for using this library. I hope you like it.

Feel free to follow me on Twitter:

@thosakwe or @regios_tech