请求响应¶
Oasis 的请求操作可以如视图函数一样返回请求响应 (HttpResponseBase 对象)。
但为了开发便利,请求操作也可以不必直接返回请求响应。
返回字符串¶
@Resource("/api")
class API:
def get(self):
return "Hello World"
备注
等同于
@Resource("/api")
class API:
def get(self):
return HttpResponse("Hello World")
返回可被 JSON 编码的对象¶
@Resource("/api")
class API:
def get(self):
return {"message": "Hello World"}
备注
等同于
@Resource("/api")
class API:
def get(self):
return JsonResponse({"message": "Hello World"})
返回 None
¶
@Resource("/api")
class API:
def get(self):
return None
备注
等同于
@Resource("/api")
class API:
def get(self):
return HttpResponse()
Response Schema¶
当返回一个不可被正常编码的对象时,可以通过使用 response_schema
参数设置一个 Schema
,它会在响应过程中对返回值进行序列化。
response_schema.py [示例1]¶
from dataclasses import dataclass
from datetime import datetime
from django_oasis import schema
from django_oasis.core import Operation, Resource
# 这里用 dataclass 来模拟创建对象
@dataclass
class Book:
title: str
created_at: datetime
class BookSchema(schema.Model):
title = schema.String()
created_at = schema.Datetime()
@Resource("/api")
class API:
@Operation(
response_schema=BookSchema,
)
def get(self):
return Book(
title="The Book",
created_at=datetime.now(),
)
备注
等同于
@Resource("/api")
class API:
def get(self):
book = Book(
title="The Book",
created_at=datetime.now(),
)
data = BookSchema().serialize(book)
return JsonResponse(data)
虽然结果一致,但是 response_schema 还会为 OAS 提供响应描述。
SwaggerUI [示例1]