Add 'injected' HTTP client option #492
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a new HTTP client option
injected
which will not generate an HTTP client and will instead add a field to all service classes in which the consumer supplies a request method in the form(options: ApiRequestOptions) => Promise<any>
. This would be the most flexible option available, as now anyone would have the power to use any request tools available. They can track and log requests, manage their own authentication, customize behavior to fit their exact needs, and inject a mock/spy method for testing.Additional changes made to facilitate this:
request
method exported by all HTTP clients now returns the body directly (Promise<any>
) instead of an object containing the body (Promise<ApiResponse>
). This makes it easier to create a method as the injected method won't have to return unnecessary information.injected
, the services are exported as pre-instantiated classes already bound to the HTTP client. So in that case, this change is invisible.request.ts
is not generated if HTTP client isinjected
.Resolves issues:
Also may replace / affect PRs #407, #434, #489.
TODO: