上文我们讲了第三方服务、Heroku、用户三者的关系,这一篇进入正题,了解第三方厂商(下文简称厂商)怎样为Heroku开发服务。这里仅仅做简介,了解heroku大致是怎么做的。假设你的平台。希望接入第三方服务,你正在犯愁,这个流程要怎么做,那么本文对你将有所启示。假设你希望实操接入heroku,请进一步查阅heroku官方文档。

本文主要概述了接入到heroku前要做的三个事情:创建配置(heroku和服务的协议),实现配置指定的接口,測试。简介了提高接入效率相关的工具。

一、工具

1.kensa。heroku提供了一个命令行的工具,它能够生成接入heroku所需的配置、測试接口。
2.Logplex.日志组件。第三方服务商能够将日志输出到这里,然后heroku用户就能在heroku平台看到日志。
3.foreman.heroku推荐的一个本地web执行容器。让你在本地能够启动并訪问服务。

二、创建接口配置

heroku和第三方厂商是通过一份配置文件来对接的。

heroku拿到这个配置文件后。才干知道服务的地址,资源接口。

这份配置,能够通过kensa来生成。有两个相关的命令,kensa init、kensa create。两者都能生成前文所述的配置文件--addon-manifest.json。不同之处在于,后者还能生成一个空的项目模版。

让我们来看一份addon-manifest.json样例
{"id": "errorbucket","api": {"config_vars": ["ERRORBUCKET_URL"],"password": "GqAGAmdrnkDFcvR9","sso_salt": "7CwqmJLEjv8YZTXK","regions": ["us","eu"],"requires": ["log_input"],"production": {"base_url": "https://errorbucket.com/heroku/resources","sso_url": "https://errorbucket.com/sso/login"},"test": {"base_url": "http://localhost:4567/heroku/resources","sso_url": "http://localhost:4567/sso/login"}}
}

id:服务名。用户能够通过heroku addons:add [id]来加入这个第三方服务
api/config_vars:创建资源时,返回的參数名列表。比如用户希望创建mysql服务,这时要返回參数,參数名是这里定义的config_vars,參数值是相应的资源唯一url
api/password:heroku发送请求给第三方server时,都会带上这个密码。
api/sso_salt:用于支持sso登录
api/regions:服务区域。

仅仅同意这里指定的区域訪问服务。主要考虑到对时延高要求的服务,对地域要求较高。假设没办法给全部地区的用户都提供高质量服务,那就限制一下吧。

api/production/base_url:生产环境的
api/test/:測试环境

三、实现接口

接口的详细实现,heroku是不关注的。主要关注下面约定
1、约定:
1、全部的接口都要使用http basic auth认证
2、假设接口不可用,应当返回422
3、假设status是422或者503。返回中的message(出错信息)可能会直接展示给用户。假设是其它异常状态码。则展示统一的出错信息
4、rest api。

资源的增删改,都相应为同一个url。如https://username:password@api.youraddon.com/heroku/resources。请求类型为Post表示创建,DELETE表示删除(需带上id,如https://username:password@api.youraddon.com/heroku/resources/:id),PUT表示改动(带上id)

5、请求參数名已由heroku定死,比如heroku_id表示用户id等。假设有自己定义字段。组装成一个options对象。
6、请求返回,能够将一些备注信息放到message字段
2、接口实例
添加资源
Request: POST https://username:password@api.youraddon.com/heroku/resources
Request Body: {"heroku_id": "app123@heroku.com","plan": "basic","region": "amazon-web-services::us-east-1","callback_url": "https://api.heroku.com/vendor/apps/app123%40heroku.com","log_input_url": "https://token:t.01234567-89ab-cdef-0123-456789abcdef@1.us.logplex.io/logs","options": {}
}
Response Body: {"id": "your-internal-unique-id","config": {"MYADDON_URL": "http://myaddon.com/52e82f5d73"},"message": "your message here"
}

删除资源
Request: PUT https://username:password@api.youraddon.com/heroku/resources/:id
Request Body: {"heroku_id": "app123@heroku.com", "plan": "premium"}
Response Body: {"config": { ... }, "message": "your message here"}

改动资源
Request: DELETE https://username:password@api.youraddon.com/heroku/resources/:id
Request Body: none
Response Status: 200

四、測试

还是借助于kensa这个工具。它提供了两个层级的測试能力。
1、服务端測试
模拟herokuserver訪问第三方服务接口的过程
kensa test provision。能够測试”test“环境,创建资源接口
 kensa test provision
Testing POST /heroku/resources
  Check response [PASS]
  Check valid JSON [PASS]
  Check authentication [PASS]
Testing response
  Check contains an id [PASS]
Testing config data
  Check is a hash [PASS]
  Check all config keys were previously defined in the manifest [PASS]
  Check all config values are strings [PASS]
done.

測试输出如上,能够看到它依次做了下面測试:验证有结果返回。验证是否做了权限验证(强制要求带权限验证),返回信息校验(包括了指定信息)
还能够通过kensa test deprovision測试”删除资源“,kensa test planchange測试资源信息变更
2、client測试
模拟heroku用户訪问第三方服务接口的过程。
首先你要实现一份代码demo。通过环境变量的方式获取资源url,然后再执行kensa run demo。run的过程,实际包括了下面步骤:调用接口创建资源,将资源url注入到环境变量中,执行你的demo(由于前面已经注入了环境变量,这时候你的demo应当能拿到资源并做操作),最后是调用接口删除资源

五、其它

1、heroku提供了api,第三方服务通过api查询服务的用户信息等。
2、支持SSO登录
3、服务供应商能通过Logplex将日志实时输出到heroku上。

转载于:https://www.cnblogs.com/gcczhongduan/p/5363265.html

Heroku第三方服务接入指南(二)相关推荐

  1. 千寻定位服务接入指南

    文章目录 0. 背景 1. 接入准备 1.1 硬件 1.2 软件 2. 编译SDK 3. 测试上位机 4. 测试验证 参考 0. 背景 为了测试.验证GNSS模块能否实现厘米级定位,故通过上位机和模块 ...

  2. SuperMap iMobile for Android 地图开发在线地图服务接入(二)

    一.对接百度地图服务 DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //设置数据源别名 info.setAlias(& ...

  3. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务安卓卡片接入指南

    荣耀开发者服务平台(HONOR Developers)是荣耀面向开发者的统一生态入口,通过聚合周边内外部系统,分全球多站点部署,为全球开发者提供业务全生命周期的商业支撑服务. 平台可为软硬件合作伙伴带 ...

  4. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务内容接口卡片接入指南

    荣耀开发者服务平台(HONOR Developers)是荣耀面向开发者的统一生态入口,通过聚合周边内外部系统,分全球多站点部署,为全球开发者提供业务全生命周期的商业支撑服务. 平台可为软硬件合作伙伴带 ...

  5. C#微信公众号开发系列教程二(新手接入指南)

    此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...

  6. 【微信服务号开发】01.接入指南

    前言 当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦. 下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦. ...

  7. 【接入指南】华为帐号服务Authorization Code模式介绍与接入步骤详解

    华为帐号服务提供两种登录授权模式,第一种是Authorization Code模式,第二种是ID-Token模式,这两种模式在使用场景上存在差异.本文将详细介绍Authorization Code模式 ...

  8. .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门--Ocelot API网关接入(二) 我们先接入Consul,实现服务发现 服务发现 1.引入 Ocelot.Provider.Consul 包 2.修改ocelot.js ...

  9. SEER交易所及第三方平台充提网关接入指南

    SEER交易所及第三方平台充提网关接入指南 本指南主要目的是帮助交易所和其它第三方平台(包括但不限于非SEER DAPPs应用.中心化应用等)搭建充提网关接入SEER主网,上线SEER主资产及基于SE ...

  10. 腾讯位置服务离线地图接入指南

    以下内容转载自腾讯位置服务的文章<离线地图接入指南> 作者:腾讯位置服务 链接:https://segmentfault.com/a/1190000022913527 来源:Segment ...

最新文章

  1. Sql Server数据库数据导入到SQLite数据库中
  2. 选择select 标签中指定值的option
  3. Linux对I/O端口资源的管理〔1〕
  4. STL源代码分析(ch 1)组态2
  5. Polly的7种策略
  6. C++基础知识简答题
  7. axios 注册拦截器 cdn引用_PicGo+jsDelivr+GitHub搭建免费cdn加速的图床
  8. let 作用域问题, 全局变量不能this引用
  9. mapreduce复制连接的代码_MapReduce:在大型集群上简化数据处理(2)
  10. CV卷得厉害,研究机器学习还能做什么?
  11. Python 机器学习 随机森林 天气最高温度预测任务(三)
  12. python编写一个程序、计算字符串中子串出现的次数_急求。。。C语言实现,计算字符串中子串出现的次数,就是先输入一个字符串,再输入一个上面字符串中存在...
  13. 后台cs代码控制html控件,cshtml中正则表达式使用后台代码
  14. 如何在blog中添加背景音乐
  15. Python基础二--基本控制语句
  16. 操作教程:摄像头通过GB28181协议注册EasyCVR的详细配置
  17. 使用python移动复制文件
  18. 实验七-卷积编码的MATLAB实现
  19. 中兴新支点操作系统_中兴新支点操作系统
  20. 思岚雷达A2在Linux下的使用教程

热门文章

  1. MongoDB 通过 Java 代码 CRUD 数据库与集合
  2. mysql 自增序列(转)
  3. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_01.mybatis课程介绍
  4. Poj2823 单调队列
  5. git优点缺点(简单介绍)
  6. 用简单直白的方式讲解A星寻路算法原理
  7. Maven Java EE Configuration Problem 的完美解决办法
  8. 自己动手写操作系统2011040101
  9. mysql关键字了解
  10. Codeforces Round #588 (Div. 1)