擦除参数

这是一个通用功能,但对于查询参数来说可能非常有用。

客户端在请求时经常会发送像这样的查询参数:?a=&b=1。在这个请求中,客户端发送的参数 a 是一个空字符串,但并不表示服务端应该接收这样的空字符串,服务端更希望不要传递这样的参数。

所以 django_oasis.schema.Model 提供了 “擦除”(erase) 字段的功能。默认将空字符串或仅包含空白字符的字符串擦除。

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


@Resource("/api")
class API:
    def get(
        self,
        query=Query(
            {
                "a": schema.String(required=False),
                "b": schema.String(required=False),
            },
        ),
    ):
        ...

当查询参数如 ?a=&b=1 时,得到的结果 query = {'b': '1'}

取消擦除

如果需要接收空字符串参数,可以将 erase 设置 None 来取消擦除功能。

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


@Resource("/api")
class API:
    def get(
        self,
        query=Query(
            {
                "a": schema.String(
                    erase=None,
                    required=False,
                ),
                "b": schema.String(required=False),
            },
        ),
    ):
        ...

当查询参数如 ?a=&b=1 时,得到的结果 query = {'a': '', 'b': '1'}