Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/f3ath/json-api-dart
JSON:API client and server for Dart/Flutter
https://github.com/f3ath/json-api-dart
api dart dartlang flutter hacktoberfest helplessness http http-client json json-api json-api-client jsonapi rest rest-api
Last synced: 7 days ago
JSON representation
JSON:API client and server for Dart/Flutter
- Host: GitHub
- URL: https://github.com/f3ath/json-api-dart
- Owner: f3ath
- License: mit
- Created: 2019-01-06T02:40:20.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-30T02:49:07.000Z (3 months ago)
- Last Synced: 2024-12-07T07:41:10.655Z (16 days ago)
- Topics: api, dart, dartlang, flutter, hacktoberfest, helplessness, http, http-client, json, json-api, json-api-client, jsonapi, rest, rest-api
- Language: Dart
- Homepage: https://pub.dartlang.org/packages/json_api
- Size: 465 KB
- Stars: 79
- Watchers: 3
- Forks: 24
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# JSON:API Client and Server
TL;DR:
```dart
import 'package:http/http.dart' as http;
import 'package:http_interop_http/http_interop_http.dart';
import 'package:json_api/client.dart';
import 'package:json_api/routing.dart';void main() async {
/// Define the server's base URL
final baseUri = 'http://localhost:8080';/// Use the standard recommended URL structure or implement your own
final uriDesign = StandardUriDesign(Uri.parse(baseUri));/// This is the Dart's standard HTTP client.
/// Do not forget to close it in the end.
final httpClient = http.Client();/// This is the interface which decouples this JSON:API implementation
/// from the HTTP client.
/// Learn more: https://pub.dev/packages/http_interop
final httpHandler = httpClient.handleInterop;/// This is the basic JSON:API client. It is flexible but not very convenient
/// to use, because you would need to remember a lot of JSON:API protocol details.
/// We will use another wrapper on top of it.
final jsonApiClient = Client(httpHandler);/// The [RoutingClient] is most likely the right choice.
/// It is called routing because it routes the calls to the correct
/// URLs depending on the use case. Take a look at its methods, they cover
/// all the standard scenarios specified by the JSON:API standard.
final client = RoutingClient(uriDesign, jsonApiClient);try {
/// Fetch the collection.
/// See other methods to query and manipulate resources.
final response = await client.fetchCollection('colors');/// The fetched collection allows us to iterate over the resources
/// and to look into their attributes
for (final resource in response.collection) {
final {
'name': name,
'red': red,
'green': green,
'blue': blue,
} = resource.attributes;
print('${resource.type}:${resource.id}');
print('$name - $red:$green:$blue');
}
} on RequestFailure catch (e) {
/// Catch error response
for (final error in e.errors) {
print(error.title);
}
}/// Free up the resources before exit.
httpClient.close();
}
```
This is a work-in-progress. You can help it by submitting a PR with a feature or documentation improvements.[JSON:API]: https://jsonapi.org