请求操作

下例定义了所有可被识别的请求操作。

views.py [示例1]
from django_oasis.core import Resource


@Resource("/path/to")
class API:
    def head(self): ...
    def options(self): ...
    def get(self): ...
    def post(self): ...
    def put(self): ...
    def patch(self): ...
    def delete(self): ...
    def trace(self): ...
SwaggerUI [示例1]

Request 对象

在使用 Oasis 开发时,很多时候都不需要直接使用到 Request 对象,所以请求操作并不像 Django 视图函数一样会收到 Request 对象。

因此 Oasis 做了如下规定: 只有定义了 __init__ 方法的 API 类才会收到 Request 对象,且 Request 对象会以第一个位置参数的形式传递给 __init__ 方法。该 Request 对象为 Django 的 HttpRequest 对象。

views.py [示例2]
from django_oasis.core import Resource


@Resource("/path/to")
class API:
    def __init__(self, request):
        self.request = request

    def get(self):
        return f"Hello {self.request.user.username}"

Operation 装饰类

Operation 赋予请求操作更丰富的能力。比如提供说明文档,定义响应结构等等。

views.py [示例3]
from django_oasis import schema
from django_oasis.core import Operation, Resource


@Resource("/greeting")
class API:
    @Operation(
        summary="打个招呼",
        response_schema={
            "msg": schema.String(),
        },
    )
    def get(self):
        return {
            "msg": "Hello",
        }
SwaggerUI [示例3]