core-api / python-openapi-codec

An OpenAPI codec for Core API.
Other
33 stars 35 forks source link

Fill parameter name from Link object instead of using "data" #42

Open wrsulliv opened 7 years ago

wrsulliv commented 7 years ago

As described by core-api/python-openapi-codec#28, the "name" field of the generated Swagger JSON is currently hard-coded to "data". When using swagger-codegen, the generated models are labeled \<Data*> which breaks the reusability of the generated SDKs.

The proposed solution allows a user to set a "title" property on a view (or viewset) which is then used to generate the "name" field in this format: \<Title>\<Action>Params.

For example, the "post" action of the following viewset will be given a name of "CommentPostParams" instead of "data".

class CommentViewSet(viewsets.ModelViewSet):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer
    title = "comment"

This pull request has an associated pull request at encode/django-rest-framework#5275, both of which act to drive further discussion on core-api/python-openapi-codec#28.

Assuming views and viewsets are named \<ViewName>View and \<ViewSetName>ViewSet, it would also be possible to extract the view name automatically with a small code change.

Related issue: marcgibbons/django-rest-swagger#595