Heroku第三方服务接入指南(二),heroku第三方


上文我们讲了第三方服务、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发送请求给第三方服务器时,都会带上这个密码。 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、服务端测试 模拟heroku服务器访问第三方服务接口的过程
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、客户端测试 模拟heroku用户访问第三方服务接口的过程。
首先你要实现一份代码demo,通过环境变量的方式获取资源url,然后再执行kensa run demo。run的过程,实际包含了以下步骤:调用接口创建资源,将资源url注入到环境变量中,运行你的demo(因为前面已经注入了环境变量,这时候你的demo应当能拿到资源并做操作),最后是调用接口删除资源

五、其他

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

两个路由器怎连接?(常见设置方法指南)

有二种连接方法:首先定义你的二台路由器,第一台为A路由器,第二台为B路由器。前提是A路由器已经设置好能正常上网(连接光纤接入或ADSL猫)。方法1:WAN口连接。任意一台电脑连接B路由的LAN口(二个路由先不要连接,因为你的TP-LINK路由IP都是192.168.1.1,如果现在连接起来会有冲突),输入路由IP地址进入设置。打开网络参数的LAN口设置,把默认的IP地址改为171.16.1.1(我这是随意改的,你可以改为其他正确的路由IP地址,用我这个也行),子网掩码默认255.255.255.0,然后保存重启路由。此时B路由的IP就变成了171.16.1.1,要进入B路由,必须输入171.16.1.1才能进入设置界面。然后,在当前电脑网卡TCP/IP属性中,将IP地址修改为172.16.1.X (X取自然数范围2254,比如66),子网掩码255.255.255.0,网关171.16.1.1。 设置完成后,打开IE,在地址栏输入172.16.1.1,重新进入B路由器设置界面,打开网络参数的WAN口设置,在WAN口联接类型中选择静态IP,将其设置为:IP地址192.168.1.X (X取自然数范围2254) 子网掩码255.255.255.0 默认网关192.168.1.1(注意IP地址192.168.1.X,其中X,一定要在现有局域网中没有用过的IP地址,如78,否则会造成冲突)。DNS和代理服务器就设为192.168.1.1。设置完成保存重启B路由器即可。接着就可以A路由器的LAN口连接到B路由器的WAN口了,B路由就起到了二次路由的功能,所有连接B路由的电脑必须遵循B路由的LAN配置,也就是说,连接B路由的电脑的TCP/IP属性设置为IP:172.16.1.X(X取自然数范围2254,只要不和B路由的LAN口一样就行了),子网掩码:255.255.255.0,网关:172.16.1.1,DNS:172.16.1.1。不填也行,可以打开B路由的DHCP服务功能,自动获取IP地址。需要注意的是,连接A路由的电脑必须遵循A路由的LAN设置规则,也就是IP:192.168.1.X(注意不能和B路由的WAN口IP设置一样),子网掩码:255.255.255.0,网关:192.168.1.1,DNS:192.168.1.1(或者选用你的网络运营商提供的DNS);连接B路由就遵循B路由的LAN设置规则。这里就不重述了。这种连接方式简单的说,就是A路由分配一个固定IP给B路由的WAN口,再由B路由分配给属下的LAN口,达成二次路由的目的。因为你的二个路由器是同一牌子的,所以前提是要改动B路由的LAN口设置,才能避免IP冲突,正常使用。方法2:LAN口连接。这个因为不经过B路由的WAN口,所以相对就简单多了。还是同上,先不要连接A路由,任意一台电脑连接上B路由的LAN口,输入路由默认IP:192.168.1.1(出厂默认)进入B路由设置,关闭DHCP服务,然后,打开网络参数的LAN口设置,更改LAN口IP地址,比如改为 192.168.1.254 只要和别的已经使用的IP地址不冲突就可以了。设置完成,保存重启即可,这时候进入B路由的IP就变为192.168.1.254了。
 

怎用路由器让2台电脑上网

一半不需要什么设置,如果要设置,也要将电脑的ip和路由ip设一个网段。
 

相关内容