api开放平台接口设计(接口平台设计与实现)

网友投稿 698 2023-02-21

本篇文章给大家谈谈api开放平台接口设计,以及接口平台设计与实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享api开放平台接口设计的知识,其中也会对接口平台设计与实现进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

开放平台API接口安全性设计——微信支付为例

API接口,类似 http://mypay.com/refund/order_id=123mch_id=123 ,这个请求我以商户mch_id=123的身份给订单号为order_id=123退款,如果服务器不辩别请求发起者的身份直接做相应的操作,那是及其危险的。

一般的,在PC端,我们是通过加密的cookie来做会员的辨识和维持会话的;但是cookie是属于浏览器的本地存储功能。APP端不能用,所以我们得通过token参数来辨识会员;而这个token该如何处理呢?
延伸开来,接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用。

一般来说,在前端对数据做加密或者前面,是不现实的。前后端使用HTTP协议进行交互的时候,由于HTTP报文为明文,所以通常情况下对于比较敏感的信息可以通过在前端加密,然后在后端解密实现"混淆"的效果,避免在传输过程中敏感信息的泄露(如,密码,证件信息等)。不过前端加密只能保证传输过程中信息是‘混淆’过的,对于高手来说,打个debugger,照样可以获取到数据,并不安全,所谓的前端加密只是稍微增加了攻击者的成本,并不能保证真正的安全。即使你说在前端做了RSA公钥加密,也很有可能被高手获取到公钥,并使用该公钥加密数据后发给服务端,所以务必认为前端的数据是不可靠的,服务端要加以辩别。敏感信息建议上https。

所以一般建议上https,敏感信息md5混淆,前端不传输金额字段,而是传递商品id,后端取商品id对应的金额,将金额等参数加签名发送到支付系统。金额可以是明文的。

token授权机制 :用户使用用户名密码登录后,后台给客户端返回一个token(通常是UUID),并将Token-UserId键值对存储在redis中,以后客户端每次请求带上token,服务端获取到对应的UserId进行操作。如果Token不存在,说明请求无效。
弊端 :token可以被抓包获取,无法预防MITM中间人攻击

用户每次请求都带上当前时间的时间戳timestamp,服务器收到请求后对比时间差,超过一定时长(如5分钟),则认为请求失效。时间戳超时机制是防御DOS攻击的有效手段。

将token,timestamp等其他参数以字典序排序,再加上一个客户端私密的唯一id(这种一般做在服务端,前端无法安全保存这个id)或使用私钥签名,将前面的字符串做MD5等加密,作为sign参数传递给服务端。

地球上最重要的加密算法:非对称加密的RSA算法。公钥加密的数据,可以用私钥解密;私钥签名(加密)的数据,可以用公钥验签。

RSA原理是对极大整数做因数分解,以下摘自维基百科。

暂时比较忙没时间,将于7月29日晚更新。
来更新啦。
微信支付安全规范,可以查看官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
第1点中,其签名算法最重要的一步,是在最后拼接了商户私密的API密钥,然后通过md5生成签名,这时即使金额是明文也是安全的,如果有人获取并修改了金额,但是签名字段他是无法伪造的,因为他无法知道商户的API密钥。当然,除了微信支付的拼接API生成签名的方法,我们也可以通过java自带的security包进行私钥签名。其中nonce随机字符串,微信支付应该做了校验,可以防止重放攻击,保证一次请求有效,如果nonce在微信支付那边已经存在,说明该请求已执行过,拒绝执行该请求。

阮一峰老师的博客-RSA算法原理: http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
维基百科: https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

会SQL语句,就能快速开放你的数据接口API

如果你是非技术开发工程,不熟悉Java、PHP、Python、Golang这些后端的编程语言,但熟悉MySQL、Oracle、SQL Server、PostgreSQL这些数据库的查询操作,当你需要把现有的数据库的数据,通过API接口形式提供给外部人员使用时,使用派框架·接口大师这个工具,就能轻松实现。

派框架·接口大师,是一套研发、管理和开放API接口的软件源代码和解决方案,基于PhalApi开源接口框架+Vue前后端分离,可用于快速搭建各类企业级接口平台。

适合用于开发新项目、已使用PhalApi开源框架的项目,或现有项目的系统重构,可用于快速搭建:OpenAPI、接口平台、数据平台、PaaS平台、SaaS平台、BaaS平台、开放平台等。

本地安装好后,就可以开始使用了。

假设我们已经在以下的国家数据库表pp_countries:

字段 sortname:表示国家简称,name 表示国家全称,还有区号phonecode,以及经纬度字段。

现在使用 接口大师 这个工具,介绍如何低代码开发、管理和开放你的数据API接口。

进入接口大师的管理后台,进入接口管理-低代码接口开发-添加接口。

接口设计类型选择:生成数据库表接口API。

在接口服务名称这里,把类名改成你的数据库表名,不需要带表前缀,同时使用大写开头的坨峰法写法。

在接口参数填写需要支持的搜索参数。

例如,支持国家名称的模糊匹配。

接下来,点击生成代码。会生成类似如下的PHP代码:

例如,找到SQL这一行的语句:

改成你自己的SQL语句,例如模糊搜索国家名。

同时把参数调整成左右模糊匹配:

然后,点击【保存并发布】。

发布接口后,就可以在OpenAPI在线接口文档看到刚刚添加发布的新数据接口。

点击可以进入新接口的在线接口文档。截图如下:

你可以在线进行接口测试。填入需要搜索的国家名,例如:输入A。

可以看到接口返回以下数据:

开启调试模式后,还可以看到背后执行的SQL语句和执行时间:

完善接口文档

你还可以补充添加接口返回的结构、字段说明。

再次发布后,就可以在前台接口文档查看到:

最后,再来看下如何把你开发添加好的新数据接口API开放给其他人。

开发者的主要使用流程是:

所以,开发者,需要先到开放平台注册一个新账号,然后登录。

再创建新的应用并等待后台审核通过:

应用通过审核后,根据app_key和密钥,申请接口访问令牌。

获取到访问令牌access_token后,就可以调用和使用你新添加的数据API接口。

API接口入门(一):读懂API接口文档

本文目录:

API接口是什么api开放平台接口设计

为什么我们需要API接口?

API接口的核心

一、API接口是什么?

我们来以一个常见的数学公式理解API,比如y=x+2,当x=2的时候,y=4,对么?

那此时,我们把y=x+2称为接口,x=2称为参数,y=4称为返回结果,那这个接口的功能就是能把我们输入的数加上2(注意:这里你可以发现接口自身是带有逻辑的)。

类比地,我们来理解一个常见的场景,比如现在有一个可以把经纬度转化为城市的接口,那当我输入经度是55°,纬度是88°的时候,接口通过自己的逻辑运算,返回结果告诉我:杭州市。

这样你就可以清晰地api开放平台接口设计了解百度百科的官方解释了,接口就是预先定义的函数逻辑,api开放平台接口设计他是供其他系统请求,然后返回结果的一个东西。

二、为什么我们需要API接口?

背景:我们的业务系统涉及多方多面,如果要一个公司或者一个系统把所有业务都做完,那未免工作量太大了吧?并且如果其他系统或公司有更好的运算逻辑,那我们在设计功能的时候可以考虑利用接口进行开发。

核心需求:利用现有接口可以降低开发成本,缩短开发成本。

举个例子:比如我是打车的APP,现在我需要在我的页面上展现地图的功能,对于我司而言,新做地图功能未免成本过高,那我们可以在高德开放平台或者百度地图的开放平台,找到地图API,这样的话我们只需要购买高德的服务,部署调用高德地图API,这样就可以快速在我们页面上线地图功能了。

三、API接口的核心

对于小白而言,初看API文档可能是一头雾水的——从哪里看,怎么看,看什么是摆在面前的问题。

其实对于产品经理而言,我们应该更关注这个公司可以提供什么样的API接口服务,比如我知道高德可以提供地图API,规划路线的API,这样的话在我们设计功能和工作中就可以想到调用他们的服务或者参考。

所以产品小白们看不懂也不用过于担心,未来工作中你也会更深入了解清楚,因为看懂并不复杂,以下是API接口的核心点,所有的说明文档离不开这5个核心点。

以下说明均以微信开放平台为例说明,文末有各开放平台的地址,大家有空可以去学习。好了,事不宜迟,现在我们来建立一个场景。

我们现在有一个APP,需要用户在购买的时候调起微信支付的API,完成购买。请各位自动进入这个场景,把自己当作一位产品经理。

1. 接口地址

现在Now,用户点击付款,我们需要告诉微信,我们要调起你们的收银台啦api开放平台接口设计!但,去哪里告诉呢?这就需要接口地址了,也就相当于向微信的这条链接传输指定的数据。

一个链接地址不是我们理解的一个页面,你可以理解是一个电话号码,小白们要改变这个观念。

此时我们可以看到接口文档告诉我们链接是如下这条,那我们现在已经拨通微信的电话了。

2. 请求参数(报文)

我们现在需要告诉微信,你想调用收银台对吧。那我们需要写下来,此时生成的叫做报文,也就是你想告诉这个接口的内容是什么?相当于前文函数的输入x=2。

一般来说,报文的格式和内容都是按接口文档规定的。如下文就是微信开放平台对调起收银台的报文要求。

我们先来看前2个参数,你现在跟微信在对话,是不是应该先告诉微信,你是谁?这里微信的文档告诉你应该要用应用ID+商户号来确定你的身份,什么意思呢?

比如你是A商户,下面有a,b,c三个APP,所以微信要知道你是哪个商家,下面的哪个APP要用收银台。这是非常重要的,微信后面要把收到的钱打到对应的账户以及统计数据等。

那我们就在报文里面写下这两句话:

<appidwx2421b1c4370ec43b</appid(我的应用ID是wx2421…….)

<mch_id10000100</mch_id(我的商户号是10000…….)

好了,现在微信知道你是谁了,那你要告诉微信,你需要微信支付帮你收多少钱对吧?这里定义了货币类型和总金额,也就是收什么货币,收多少钱。

这里你看,货币类型的必填写了否,也就是说你也可以不告诉微信支付货币类型是什么,因为他在后面备注了默认是人民币。

好的,那我们写下两段报文

<free_typeCNY</ free_type (我要收人民币)

<total_fee1</total_fee(我要收1元)

好了,现在微信知道你是谁,也知道要收多少钱了,那接下来微信支付要把收钱结果告诉你呀,因为你得知道用户是成功支付了才能继续发货,服务啊等等的。所以这里我们用到通知地址,就是告诉微信,等下完事了他去哪里告诉你支付结果。那我们把地址写好:

<notify_urlhttp://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url

3. 返回结果

刚刚微信支付已经去收款了,现在他要在我们留下的通知地址中,告诉我们结果了。结果无非是两种:成功收款?收款不成功?

(1)成功

很顺利,现在用户成功付钱了,并且微信也把成功的消息告诉我们了,并且他还把用户支付的一些信息也告诉我们。

那这里就是微信支付成功收款后告诉我们的信息。

应用APPID,商户号:告诉你我成功扣款的是哪家商户的哪个APPID的交易。

业务结果:成功或失败

(2)失败

在产品设计的时候,我们往往很关注失败的情况,当收款失败的时候,微信同时会告诉你失败的原因,如下图很好理解,失败的原因有很多很多种,我们在设计的时候往往要分析每种失败的原因,为每个失败的原因设计页面和用户提示,以确保用户能理解。

以上就是API接口基本运作模式的理解,下面我将继续更新API接口的一些更为深入和细节的关键元素,如请求方式/签名/加解密等等。

可供参考的开放平台网站

微信支付:https://pay.weixin.qq.com/wiki/doc/api/index.html

高德平台开放平台:https://lbs.amap.com/ 关于api开放平台接口设计和接口平台设计与实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 api开放平台接口设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口平台设计与实现、api开放平台接口设计的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JavaFX实现简易时钟效果(二)
下一篇:JavaFX实现简易时钟效果(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~