请求操作¶
下例定义了所有可被识别的请求操作。
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]