擦除参数¶
这是一个通用功能,但对于查询参数来说可能非常有用。
客户端在请求时经常会发送像这样的查询参数:?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'}
。