目录
WSME
WSME(Web Service Made Easy)是一个 RESTful API Service Typing 库,用于对 HTTP Request Body、Response Body、Response Status Code 进行规范化的校验和约束。
WSME 的设计理念是:在大多数情况下,Web Services 对输入/输出数据类型的要求都是严格的。
- 官方文档:https://wsme.readthedocs.io/en/latest/index.html
WSME 的使用
WSME 提供了 2 个装饰器:
- @signature:用来描述一个方法或函数的输入/输出数据类型。注意,大多数情况下不建议直接使用该装饰器,而是使用为不同的 Web 框架进行封装的 @wsexpose。
class wsme.signature([return_type, [arg0_type, [arg1_type, ..., ]]]body=None, status_code=None)
# return_type – Type of the value returned by the function
# argN – Type of the Nth argument
# body – If the function takes a final argument that is supposed to be the request body by itself, its type.
# status_code – HTTP return status code of the function.
# ignore_extra_args – Allow extra/unknow arguments (default to False)
- @wsexpose:包含了 @signature 的功能,也具有相同的形参列表,同时还会把方法或函数的 Route Infors 暴露给 Web 框架,类似于 Pecan 提供的 @expose 装饰器,被装饰的方法或函数可以被 Controller Router 找到。
# wsmeext.pecan.wsexpose(return_type, *arg_types, **options)
@wsexpose(ResponseBodyType,
Param01Type, Param02Type, ..., Param0NType,
body=RequestBodyType,
status_code={{ successfully_status_code_num }},
ignore_extra_args=True)
def http_method(self, param01, param02, ..., param0N, body):
...
- 7
- 8
NOTE:对于 Error 或 Exception 的 Response Context 和 Status Code,通常直接在 raise exceptions 中定义,由 Pecan 框架捕获之后进行响应,而不会经过 WSME 的处理,所以 WSME 也没有这方面的逻辑。