解决 - 编写API注意事项

1. 命名:
    项目/文件/函数 -> 小写+下划线
    类 -> 驼峰
    
2. pycharm运行不起来
  解释器,文件存放

3. 简单逻辑先处理 ret = {"code": 1000} try: user = request.data.get('user') pwd = request.data.get('pwd') user = Account.objects.filter(username=user, password=pwd).first() if not user: ret['code'] = 1001 ret['error'] = '用户名或密码错误' return Response(ret) uid = str(uuid.uuid4()) UserAuthToken.objects.update_or_create(user=user, defaults={'token': uid}) ret['token'] = uid except Exception as e: ret['code'] = 1003 return Response(ret) 4. 特殊异常捕获 5. 封装响应对象 class BaseResponse(object): def __init__(self): self.code = 1000 self.data = None self.error = None @property def dict(self): return self.__dict__ 6. 简单接口时,可以使用rest framework封装好的功能 class CourseViewSet(mixins.ListModelMixin,mixins.RetrieveModelMixin,GenericViewSet): queryset = models.Course.objects.all() serializer_class = CourseViewSetSerializers 7. 接口如何编写? 业务: 返回所有: http://127.0.0.1:8088/api/v1/course/1/ 多个接口: http://127.0.0.1:8088/api/v1/course/1/ http://127.0.0.1:8088/api/v1/section/?course=1 http://127.0.0.1:8088/api/v1/chapter/?course=1 8. django查询 class AgreeView(ViewSetMixin, APIView): def post(self, request, *args, **kwargs): """ 点赞 :param request: :param args: :param kwargs: :return: """ ret = {'code': 1000, 'data': None} try: pk = kwargs.get('pk') # 方式一:更新赞数 obj = Article.objects.filter(id=pk).first() obj.agree_num = obj.agree_num + 1 obj.save() # 方式二:更新赞数 # F,更新数据库字段 # Q, 构造复杂条件 # from django.db.models import F,Q # v = Article.objects.filter(id=pk).update(agree_num=F("agree_num") + 1) # print(v) ret['data'] = obj.agree_num except Exception as e: ret['code'] = 1001 ret['error'] = '点赞失败' return Response(ret) 9. 事务
      原则:
        - 简答逻辑先处理
        - try 
        - 细粒度异常+自定义异常
        - 导入模块
            - 内置 
            - 框架
            - 自定义 
        - 注释 
            - 文件
            -- 函数 
        - 文件名、类、函数、project
        - 对功能进行分类
        - 减少代码层级
        - BaseResponse 
posted @ 2018-07-23 12:12  Alice的小屋  阅读(183)  评论(0)    收藏  举报