[Go] Support streaming responses in go client #8199
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.
PR checklist
./bin/to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.shand./bin/security/{LANG}-petstore.shif 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\.3.0.0branch for changes related to OpenAPI spec 3.0. Default:master.@wing328 @antihax
Description of the PR
Like python client #4166, we want Go API client to not read response content and return the http.Response with Body not closed, to support streaming responses. This PR add a separate method for each operation to keep current behavior.
Alternatives considered:
returnTypein function signature, which is not flexible (e.g. you cannot use different operation methods as same parameter)func (a *SomeApiService) GetFooRawResp(...) (FooResponseStruct)andfunc (f *FooResponseStruct) DecodeFooResponse() (Foo, *http.Response, error), whereFooResponseStructcontains the raw http response and error. The downside is same as the first one(a *SomeApiService):func (a *SomeApiService) GetFooRawResp(...) (*http.Response, error)andfunc (f *FooResponseStruct) DecodeFooResponse(*http.Response) (Foo, *http.Response, error). Flexible, but breaks current behavior.