Skip to content

Represent empty responses as None #770

@cornerman

Description

@cornerman

When I specify no content for a response, I would expect to generate a sync method and async method that returns None.

Currently, I work against an api that has a few endpoints returning no data (that could be with status code 200 or status code 204).
Example:

   "/something" : {
      "patch" : {
        ...
        "responses" : {
          "200" : {
            "description" : "something"
          }
        }
      }
    }

When I generate a client with this project, this endpoint will not have a sync or async method, but only the sync_detailed and async_detailed. This works, but it looks weird because for all other methods I use sync/async. I would be great to have them implemented to return None (like a void/unit method in python).

I think, the problem manifests here:

{% set parsed_responses = (endpoint.responses | length > 0) and return_string != "Any" %}

The sync method is only generated if the return type is not any - which makes sense. But I think, the return type here is not actually Any - but None. The response type comes from here:

Here is a link with documentation on handling empty responses and any type: https://swagger.io/docs/specification/data-models/data-types/

According to that, the difference is having either no content field for empty responses and having a content field defined with an empty object for any type.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions