前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论一个好接口的自我修炼

论一个好接口的自我修炼

作者头像
python编程从入门到实践
发布2019-10-22 15:18:06
3780
发布2019-10-22 15:18:06
举报

hello,大家好,今天我们分享一篇python开发中的一个很重要的case,那就是写接口。之前见到过一位应聘者的简历,写着接口开发3年,然后期望薪资20~25k。当时想着喔,好腻害呀,写了三年的接口就可以要20多k啦,之后才了解到,接口写了三年了,但是问题依然很多,写的不全面,也就是不规范,估计是高中数学中的集合的分类没有学好,现在烙下病根啦。再怎么说我们也是专业的好吗,你的不专业可能让你的表现大打折扣。

根据自己的实际开发来看,要写出靠谱的接口要遵循一下几个原则

第一、看着要舒服

颜值总是放在第一位的,现在社会的确如此(虽自己不想承认)。接口代码也是如此,我们做不到,更别说维护和修改了。如果你不知道什么是好的标准,那么遵循PEP8。如果自己懒的去扣其中的细节,本人在博客园上写过一篇相关的可以参考:https://www.cnblogs.com/haishiniu123/p/7125677.html

我们看一下写的不太好的代码是长的什么样子的(我这里只是简单的写了几句),是不是看起来很low:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
# !/usr/bin/python
a={"ret":'1000',"data":[1,2,3]}
def function_interrupt(data):
  b=data['ret']
  if b=='1000':
        print 'query success'
  else:
        print 'query error'

我们同样的按照pep8的规则来简单的修改一下以上的代码(可以使用快捷键:Ctrl + Alt + L)快速的整理一下代码,效果是如下:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
# !/usr/bin/python
a = {"ret": '1000', "data": [1, 2, 3]}


def function_interrupt(data):
    b = data['ret']
    if b == '1000':
        print 'query success'
    else:
        print 'query error'

我不知道你的感受如何,你的专业程度也就决定你能走多远,so,先让自己专业起来。

第二、功能完整且正确

接口功能完整,意味着这个接口内部至少要包含四个部分:参数验证、权限验证、数据操作和返回结果。其中每个部分可以少至只有一两行代码,在一些特殊情况下还可能没有代码,但是编写者需要在心里清晰地知道这个接口中的四个部分分别是哪几行。

由于不能提供真实开发中项目的case,从网上找的一个图片仅供参考不可作为他用哈,我们来看一下:

从以上的内容中我们是可以看到:

2.1.参数验证是验证传入的参数是否有效,如果不写,往往会在参数错误时导致代码某处报错,服务器返回500。一个好接口是不允许返回500的。

2.2.权限验证是保证接口的调用时机和调用者与设计意图相同。调用时机不对,会导致脏数据的产生。调用者不对,会带来数据泄露的问题。无论哪一种,都可能最终导致业务的失败,造成不可挽回的损失。不知道大家有没听说过黑白名单之说呢,不太了解的小伙伴请自行百度了解,这个在正常的开发中都会涉及到。

2.3.数据操作是实际的数据更改,这部分是功能实现的部分。

2.4.返回结果部分,关键在于返回的数据结构的合理性。有关数据结构的合理及可用。做的好的接口这里是有很多文章可以做的,不知道有没有听说过服务降级类似的东西,就是当我服务器出现问题,我任然有东西返回给用户,所以这块做的好的妈妈再也不用担心我半夜三点爬起来修复线上问题啦,我完全可以第二天上班再淡定的处理。

第三、接口要让使用者愿意用

大家的眼睛都是雪亮的,不要自己说自己的接口如何又如之何。传入的参数要见名知意,能简单就不要复杂,大道至简哦。

第四、接口要基本安全

有一半的人用了eval解析接口参数。想想这个比例也是蛮吓人的。有多少公司的后台开发会不自觉地留下eval这个黑客大门。(留过这个后门的请自觉留言承认错误)当然还有很多很多安全方面的基本操作要注意我就不一一列举了。

能够做到以上几点的接口,就是一个不错的接口啦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python编程从入门到实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档