handle method
Future<Response>
handle(
- Request request
)
Implementation
@override
Future<Response> handle(Request request) async {
_validate(request);
final target = _matchTarget(request.uri);
if (target is RelationshipTarget) {
if (request.method.equals('GET')) {
return await _controller.fetchRelationship(request, target);
}
if (request.method.equals('POST')) {
return await _controller.addMany(request, target);
}
if (request.method.equals('PATCH')) {
return await _controller.replaceRelationship(request, target);
}
if (request.method.equals('DELETE')) {
return await _controller.deleteMany(request, target);
}
throw MethodNotAllowed(request.method.value);
}
if (target is RelatedTarget) {
if (request.method.equals('GET')) {
return await _controller.fetchRelated(request, target);
}
throw MethodNotAllowed(request.method.value);
}
if (target is ResourceTarget) {
if (request.method.equals('GET')) {
return await _controller.fetchResource(request, target);
}
if (request.method.equals('PATCH')) {
return await _controller.updateResource(request, target);
}
if (request.method.equals('DELETE')) {
return await _controller.deleteResource(request, target);
}
throw MethodNotAllowed(request.method.value);
}
if (target is Target) {
if (request.method.equals('GET')) {
return await _controller.fetchCollection(request, target);
}
if (request.method.equals('POST')) {
return await _controller.createResource(request, target);
}
throw MethodNotAllowed(request.method.value);
}
throw UnmatchedTarget(request.uri);
}