Created by: petejohansonxo
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first. -
Filed the PR against the correct branch: master
,4.1.x
,5.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
This PR creates a new TypeScript generator that generates functions for consuming APIs using the redux-query library. In particular, redux-query operates on the concept of a QueryConfig
that is an object structure that describes a query/mutation, and then the redux-query library then handles actually making the API requests, managing state of requests in Redux, and processing responses via the transform
and update
callbacks.
Given that, the functions exported from this generator don't actually call the operation, but instead generate a QueryConfig
that describes an API request, and that can be passed to redux-query library from there.
Authentiation
The general recommendation for auth of redux-query requests is not to add the auth details "inline" in the QueryConfig objects, but instead use a Redux middleware to update the passed in Actions and update the QueryConfig w/ the necessary auth headers, etc.
To support this, instead of "inlining" the authentication bits, we instead generate code to include in the meta
property of the QueryConfig
a description of the requested authenticate type for the particular config. Custom middleware can be written by consumers of the generated code to inspect this meta-info at runtime and add the correct auth headers, to the QueryConfig
objects before they get passed into the redux-query library where the requests are actually sent to the API endpoints.
My first generator and contribution to this project, so if I missed anything, please let me know.
Thanks!
CC: @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @nicokoenig (2018/09) @topce (2018/10) @akehir (2019/07)