Open API即开放API,也称开放平台。 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将本身的网站服务封装成一系列API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫作开放网站的API,所开放的API就被称做OpenAPI(开放API)。
之前的软件开发都是针对特定的用户或群体进行设计,但用户的需求是千差万别的,众口难调就是这个道理。随着软件开发的发展,人们的关注点和设计模式也在悄悄发生着变化,我与其针对特定客户进行开发,不如站在大众的角度进行设计,把本身从甲方乙方的魔咒中解禁出来,本身成为甲方。也就是说我之前开发的软件只给你用,你还不满意,如今我只提供核心业务,你本身来对接,你想设计成什么样子就设计成什么样子。因而 Opean Api 应运而生!!淘宝、阿里、腾讯都是这么干的,人家是大公司,规则的制定者,人家怎么规定接口,你就得怎么对接!!有一个网站叫 聚合数据 专门提供一些免费的和收费的优秀 API,有兴趣的能够上去注册玩玩。数据库
关于如何开发这样的一套接口,刨除实际的业务逻辑不说,咱们来看看怎么设计?下面是我在设计的时候遇到问题的思考,可能不全面仅供参考!编程
先来看看有那几点须要考量?我也是凭经验和 Google。设计模式
作API,尤为是 Open API 最重要的就是安全、安全、安全,试想一下,你的接口我能够随随便便就猜对帐号密码,随随便便就能够DDOS 你,你都没有办法保证用户信息的安全,谁还敢用你。其实你是在作一件反黑客的设计,呵呵,是否是高大尚了不少。api
Client:你怎么知道一个请求是我而不是别人呢?安全
API:你若是对接我,我给你起一个全世界惟一名字就吧,你请求的时候就告诉我你叫 xxx,赋值到请求中的app_key中就行,至于这个字段叫app_key仍是叫 UserName仍是叫 client_id,这个看你心情了。因而就有了接口的第一个功能,给客户起一个惟一名字。服务器
Client:若是别人也知道了这个用户名,冒充我怎么办?网络
API:我还会给你一个配套的密码,密码只有你我知道,你请求的时候,把密码带过来,我先验证密码,密码经过了我才容许访问。这样就没人能冒充的了你了吧。你密码丢了,那就是你本身的事情了。app
Client:如今 HTTP 都是明文通讯,我每次访问都带上个人帐号密码,那不等于广而告之天下吗?就像拿着一袋子钱在路上边走边喊“快来抢我呀!快来抢我呀!”,一个小小的嗅探器就能把用户的密码拿到手,若是用户习惯在全部地方用一个密码,那么你闯大祸了,黑客经过撞库的方法能把用户的全部信息一锅端。异步
API:那就就用你的帐号密码先到我这儿换取一个口令吧,咱们叫 token,这样携带口令且口令正确的咱们就认,没有携带口令或口令不正确的咱们几次绝,这样你就不用带着密码满世界跑了。网站
Client:可是那若是 Token 被截获了呢?黑客重放怎么办!!
API:这个口令是有一个过时时间的好比10分钟、一个小时、一天、3个月等等,大家也能够作到单点登陆,我这边也能够有效的控制外人的入侵,同时避免了重复信息的反复查询数据库和对比等操做,绝对能够提升响应速度,校验 token 的有效性花费的时间绝对比查数据库要来的快啊。咱们在服务器端接口被调用时就能够对发起请求的ip地址、user-agent之类的信息做比对,以防止伪造。再而后,若是token的有效期设得小,过一下子它就过时了,除非黑客能够持续截获你的token,不然他只能干瞪眼。
Client:这个能够,可是我第一次输入密码的时候仍是有可能被窃取啊?
API:那就上 HTTPS ,密码什么的用 SSL 加密协议传输,我看谁还能窃取到呢?你要还纠结呢咱就上非对称?
Client:…
API:还有话说么?没话说就老老实实对接