platform/README.md

73 lines
2.2 KiB
Markdown
Raw Normal View History

2016-03-04 04:30:13 +00:00
# Body Parser
2016-04-17 03:11:33 +00:00
![version 1.0.0-dev](https://img.shields.io/badge/version-1.0.0--dev-red.svg)
2016-03-04 04:30:13 +00:00
**NOT YET PRODUCTION READY**
2016-04-17 19:51:40 +00:00
Parse request bodies and query strings in Dart, as well multipart/form-data uploads. No external
dependencies required.
2016-03-04 04:30:13 +00:00
### Contents
* [Body Parser](#body-parser)
* [About](#about)
* [Installation](#installation)
* [Usage](#usage)
2016-03-04 04:36:45 +00:00
* [Thanks](#thank-you-for-using-body-parser)
2016-03-04 04:30:13 +00:00
# About
I needed something like Express.js's `body-parser` module, so I made it here. It fully supports JSON requests.
2016-04-17 03:11:33 +00:00
x-www-form-urlencoded fully supported, as well as query strings. You can also include arrays in your query,
2016-04-17 19:51:40 +00:00
in the same way you would for a PHP application. Full file upload support will also be present by the production 1.0.0 release.
2016-03-04 04:30:13 +00:00
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`.
```dart
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();
}
}
```
2016-03-04 04:35:59 +00:00
You can also use `buildMapFromUri(Map, String)` to populate a map from a URL encoded string.
2016-03-04 04:30:13 +00:00
This can easily be used with a library like [JSON God](https://github.com/thosakwe/json_god)
to build structured JSON/REST APIs. Add validation and you've got an instant backend.
```dart
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](http://twitter.com/thosakwe)
or
[@regios_tech](http://twitter.com/regios_tech)