apidoc用于写http restful接口文档注意事项

由于postman被墙了,用apidoc来写restful接口文档,并附上test case,感觉很不错。
在使用中,这个apidoc跟postman相比,还是有几点区别:
一、restful风格的url,最后不能是'/'结尾。
比如,消息列表的url,应该是:
http://127.0.0.1:8000/api/messages,GET
不能写成http://127.0.0.1:8000/api/messages/,GET
二、query参数,要支持如下风格:
http://127.0.0.1:8000/api/messages/list?page_index=&page_size=&is_read=&notification_type=&set_read_flag=&warehouse_id=&message_status=&box_type=
这就是说,在实现url方法时,如果是传进来空值,就要自行添加一个default值。


page_index = param_utils.get_param_by_request(request.GET, "page_index", 1, int)
def get_param_by_request(params, param_name, default_val=None, _type=None):
    try:
        if param_name in params:
            _val = params[param_name]
        else:
            _val = default_val
        if _type:
            _val = _type(_val)
        return _val
    except Exception as e:
        return default_val
同时再说一个bug。
bug现象:
ValueError: invalid literal for int() with base 10: ''
这个话的意思是,对int变量赋值时出错,就是下面这段代码:
record.copy_status_ori = int(kwargs['status_ori'])
因为这个字段在model中定义为:IntegerField
copy_status_ori = models.IntegerField(choices=ORIGINAL_ORDER_STATUS,
                                          verbose_name='订单原始状态(copy)',
                                          null=True)
 if 'status_ori' in kwargs:
  # print('status_ori=', kwargs['status_ori'])
    if kwargs['status_ori'] is not None and isinstance(kwargs['status_ori'], int):
       record.copy_status_ori = int(kwargs['status_ori'])

       record.copy_status_ori_value = find_name(int(kwargs['status_ori']), ORIGINAL_ORDER_STATUS)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值