drf_openapi icon indicating copy to clipboard operation
drf_openapi copied to clipboard

Make DRF API versioning optional.

Open axnsan12 opened this issue 8 years ago • 2 comments

Make drf-openapi work without enabling api versioning (i.e. without having a version parameter in the request).

Motivation:

  • not all users have versioning enabled
  • it is not always easy, desired or even possible to enable versioning
  • the readme claims that this "Can be dropped into any existing DRF project without any code change necessary."

Closes #71.

axnsan12 avatar Nov 26 '17 13:11 axnsan12

With this PR, the version parameter is still required in the view_config decorator here: https://github.com/limdauto/drf_openapi/blob/master/drf_openapi/utils.py#L27

That can be addressed with something like this:

diff --git a/drf_openapi/utils.py b/drf_openapi/utils.py
index 786f539..49e24e5 100644
--- a/drf_openapi/utils.py
+++ b/drf_openapi/utils.py
@@ -13,7 +13,9 @@ def view_config(request_serializer=None, response_serializer=None, validate_resp
         view_method.response_serializer = response_serializer
 
         @wraps(view_method)
-        def wrapper(instance, request, version=None, *args, **kwargs):
+        def wrapper(instance, request, *args, **kwargs):
+            version = kwargs.get('version', None)
+
             if request_serializer and issubclass(request_serializer, VersionedSerializers):
                 instance.request_serializer = request_serializer.get(version)
             else:
@@ -24,7 +26,7 @@ def view_config(request_serializer=None, response_serializer=None, validate_resp
             else:
                 instance.response_serializer = response_serializer
 
-            response = view_method(instance, request, version=version, *args, **kwargs)
+            response = view_method(instance, request, *args, **kwargs)
             if validate_response:
                 response_validator = instance.response_serializer(data=response.data)
                 response_validator.is_valid(raise_exception=True)

ioga avatar Nov 29 '17 01:11 ioga

Thanks. Sorry I know I have not been very active lately. I will look at this feature request this weekend.

limdauto avatar Dec 14 '17 19:12 limdauto