Golang 10行代码,搞定对外提供 OpenAPI

open api

open api 是什么? Open API即开放API,也称开放接口 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放API)。 (摘自百科,主要为了说一下概念)

open api 设计常见问题

服务提供

通信方式设计

常见的设计是: 必备的有:app key 与 app secret 签名 可选的有: 企业ID, 业务ID。 这些可选的东西一般用来区分业务领域或者权限而存在,确保不同调用者领域与权限的隔离。

app key 与app secret 是我见过最常见,也是必然会出现的一个设计, 在我对接过的十多种API(阿里、腾讯、小米)中, 这这些都是必备的。

app key 的作用

主要是为了防止请求被篡改以及用户识别。一般一个 app key 是用于做用户识别的, 服务提供方一般会存放调用方的一些信息, 并可以通过这个App key 检索到。

app secret 的作用

app secret 主要是用来签名请求的, 签名过的请求如果被修改之后, 则签名就会发生变化,攻击者是不可能知道这个变化的结果的,这样可以有效防止攻击者的攻击。

一般来讲,会对如下领域进行签名:

  1. parameter (url 参数)
  2. header (请求头)

一般的流程如下:

  1. 用户在请求参数信息中加入时间信息
  2. 用户使用自己的 app secret 对请求进行签名
  3. 用户把签名的结果, app key 与其他参数一起放到请求里面传到服务提供方
  4. 服务方根据 app key找到自己存放的 app secret, 并对请求进行签名
  5. 比对签名信息是否一致, 不一致,则认认为请求受到了非法修改,直接拒绝服务。
  6. 校验时间信息, 确保时间信息是在允许的范围内, 否则拒绝提供服务。

如何颁发? 一般是由服务提供方生成这样的一个键值对, 并把键值对安全的递给调用方。 以后 app secret 不会出现在网络传输中,只会用于双方的签名校验。

数据格式与文档
  1. 服务地址, 需要准确无误的告诉服务提供方的调用地址
  2. 环境设置 (一般API提供方会提供线上与线下两种途径一个用来线上使用,一个用来调试)
  3. 参数规定 (对于一个Open API一般来讲参数都是固定的, 不能随意变动,否则会引起双方不小的争执)
  4. 结果格式 (结果格式,要写清楚所有出现的结
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值