![8092f9c1c129aca192dc508ee290c534.png](https://i-blog.csdnimg.cn/blog_migrate/dda1b5d7e231ec345b9b5a9b73b21f75.jpeg)
hello,大家好,今天分享一篇python开发中的一个很重要的case,那就是写接口。之前见到过一位应聘者的简历,写着接口开发3年,然后期望薪资20~25k。当时想着喔,好腻害呀,写了三年的接口就可以要20多k啦,之后才了解到,接口写了三年了,但是问题依然很多,写的不全面,也就是不规范,估计是高中数学中的集合的分类没有学好,现在烙下病根啦(嘿嘿)。再怎么说我们也是专业的好吗,你的不专业可能让你的表现大打折扣。
根据自己的实际开发来看,要写出靠谱的接口要遵循一下几个原则:
第一、看着要舒服
![2b6992decc8977a922e85accf312fc56.png](https://i-blog.csdnimg.cn/blog_migrate/1f0e9fa5a5eb56dea6852ecfdaf9d5c2.png)
颜值总是放在第一位的,现在社会的确如此(虽自己不想承认)。接口代码也是如此,我们做不到,更别说维护和修改了。如果你不知道什么是好的标准,那么遵循PEP8。如果自己懒的去扣其中的细节,本人在博客园上写过一篇相关的可以参考:
python 编码规范整理 - 还是牛 - 博客园
我们看一下写的不太好的代码是长的什么样子的(我这里只是简单的写了几句),是不是看起来很low:
# -*- 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)快速的整理一下代码,效果是如下:
# -*- 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,从网上找的一个图片仅供参考不可作为他用哈,我们来看一下:
![c81fd88abc2f1e5b86e50220c11efa4f.png](https://i-blog.csdnimg.cn/blog_migrate/cf3438287c01a37e2f247f556ba7eca2.jpeg)
从以上的内容中我们是可以看到:
2.1.参数验证是验证传入的参数是否有效,如果不写,往往会在参数错误时导致代码某处报错,服务器返回500。一个好接口是不允许返回500的。
2.2.权限验证是保证接口的调用时机和调用者与设计意图相同。调用时机不对,会导致脏数据的产生。调用者不对,会带来数据泄露的问题。无论哪一种,都可能最终导致业务的失败,造成不可挽回的损失。不知道大家有没听说过黑白名单之说呢,不太了解的小伙伴请自行百度了解,这个在正常的开发中都会涉及到。
2.3.数据操作是实际的数据更改,这部分是功能实现的部分。
2.4.返回结果部分,关键在于返回的数据结构的合理性。有关数据结构的合理及可用。做的好的接口这里是有很多文章可以做的,不知道有没有听说过服务降级类似的东西,就是当我服务器出现问题,我任然有东西返回给用户,所以这块做的好的妈妈再也不用担心我半夜三点爬起来修复线上问题啦,我完全可以第二天上班再淡定的处理。
第三、接口要让使用者愿意用
大家的眼睛都是雪亮的,不要自己说自己的接口如何又如之何。传入的参数要见名知意,能简单就不要复杂,大道至简哦。
第四、接口要基本安全
![860b569b2736d12378e6040fa7bd55ef.gif](https://i-blog.csdnimg.cn/blog_migrate/e01c0b806eadd706d089f3eda91f6669.gif)
有一半的人用了eval解析接口参数。想想这个比例也是蛮吓人的。有多少公司的后台开发会不自觉地留下eval这个黑客大门。(留过这个后门的请自觉留言承认错误)当然还有很多很多安全方面的基本操作要注意我就不一一列举了。
个人认为能够做到以上几点的接口,就是一个不错的接口啦。好了你可以出去装大佬咯,哈哈!
当你发现自己的才华撑不起野心时,请安静的坐下来学习吧。
------还是牛
![e49aaf9336deb95ee89b90c74ec2c988.png](https://i-blog.csdnimg.cn/blog_migrate/1e0b08379dc288839e91fef415e1bb30.jpeg)
公众号ID:pythonCoder1024 扫码关注最新动态
如果你觉得公众号的内容不错,可以推荐于身边的朋友,你的每次肯定和受益都会成为我前进的动力,一起加油!