openstack api的请求检查

openstack 项目的源码写得越来越好,大家阅读源码是可以学到很多理念的,例如rest api的编写框架,我有相关博客论述rest api的新建,这里我们来欣赏一下关于rest api的请求的检查,


1,对于一个rest api来说,不应该限制太多,例如规定它要穿什么样的json,因为限制太多,意味我们要新增的时候,麻烦太多,互联网变化太快,需求变得快,就会很难及时修改,但是又要个机制可以检查请求体等参数
2,引入了装饰器写在想要检查的方法头,再新增一个相应的逻辑
viz。 


    
@validation.schema(schema_server_create_v232, '2.32', '2.36')
    @validation.schema(schema_server_create_v237, '2.37')
    def create(self, req, body):
        """Creates a new server for a given user."""


        context = req.environ['nova.context']



由上述的装饰器来形成这样的检查逻辑
validation.schema 是validation包的schema方法,是对开源jsonschema封装,通过定义一个schema(检查格式)对一个json进行检查,具体用法是
base_create = {
    'type': 'object',
    'properties': {
        'server': {
            'type': 'object',
            'properties': {
                'name': parameter_types.name,
                # NOTE(gmann): In case of boot from volume, imageRef was
                # allowed as the empty string also So keeping the same
                # behavior and allow empty string in case of boot from
                # volume only. Python code make sure empty string is
                # not alowed for other cases.
                'imageRef': parameter_types.image_id_or_empty_string,
                'flavorRef': parameter_types.flavor_ref,
                'adminPass': parameter_types.admin_password,
                'metadata': parameter_types.metadata,
}}



定义一组python字典

用来描述属性要求满足的格式,其中
  'oneOf': [{'type': 'string', 'format': 'uuid'},
                                          {'type': 'null'}] 就是满足其中一个条件,
allOF 是满足所有
validation.schema 通过jsonschema 扩展了一个api请求的版本号的附加检查,来倚靠jsonschema对一个json字符串进行检查。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值