最近须要把一些功能拆分为HTTP API,因而找到了它。Repose是一款开源的API中间件,它能够帮你轻松实现那些API设计里最基本的功能,诸如认证,限速,验证,Logging等。Repose是Rackspace旗下的产品,因此靠谱程度很高。java
当你写了个一个页面Parser,一个“1秒钟算1BIL次蛋疼指数”的程序,一个经过一个mail判断一我的是否是靠谱的“占卜服务”以后。若果你想让更多的人能享受到你的智慧,最简单的想法就是把代码开源出去。但不少人是不肯意这样作的,因而就会想到把它做成网络服务,收费提供出去。也就变成了前面二十多篇文章介绍的各类API服务。node
通过这多年的积累,Web API服务已经逐渐造成了一套相对标准的作法,从各类开放平台的作法就能看出来。算法
工程师用多了这类产品之后,遇到新的服务每每就会轻车熟路的不用看任何Tutorial。直到有一天,工程师决定本身也要搞一套这样的服务,问题就出现了。这几个环节具体都要如何实现呢?docker
因而就在API as a Service(其实就是只提供API的Software as a Service)以外,出现了个API hosting as a Service的概念(是否是以为XaaS特别Ass...)。也就是我帮你托管你的API,帮你作掉前面那些步骤的事儿,您安心开发您的核心算法,提升效率,下降错误率就好啦。其实,对于Amazon这样的老早就看到解耦合,把业务都拆分红细小服务的公司来讲,这个概念已经太古老了。数据库
一样提供这类服务的也有很多,好比界面作的太漂亮的Apiary.io,搭建API全生态链的Mulesoft。但由于我是想搭建在本身的服务器上的,因此暂时不考虑那些托管的平台。express
感慨于Docker神速的发展,Respose最简单的部署方法就是部署一个Docker container。隐隐就已经看到了一个Repose as a Service的产品了...segmentfault
Repose的工做原理很简单,就是在你的裸API和用户之间作一个代理。api
文档中描述的Repose的基本功能以下。服务器
有好几种部署方法,嵌入源码,WAR,独立Proxy server,独立Proxy server cluster。咱们确定不能假设服务器是java的,因此确定选择独立Proxy server这种模式。restful
配置里最重要的就是Destination endpoint,一个典型的以下,很清晰的描述一个即将被封装的API endpoint。(又看到了xml配置文件,让一个former javaer仍是感慨良多)
<endpoint id="example service" protocol="http" hostname="myapi.com" root-path="/" port="80" default="true"/>
因为尚未图形界面配置的功能呢,因此强烈建议从Repose+101入手。装个Virtualbox,里面装docker。
// TODO 过两天把装了Repose的VM传上去
Repose里除了刚才提到的Endpoint之外还有两个重要概念,filter和service。filter就是一个request一路通过的劫难。service就是诸如分布式数据库之类的东西。
nodejs写一个简单的mock server来伪装一个牛逼服务。node app.js
跑起来。
var express = require('express'); var app = module.exports = express(); app.get('/api/nbservice', function(req, res){ res.send('cool to die'); }); app.listen(8080);
写一个简单的Repose配置
<system-model xmlns="http://docs.rackspacecloud.com/repose/system-model/v2.0"> <repose-cluster id="repose"> <nodes> <node id="node1" hostname="localhost" http-port="8888"/> </nodes> <filters> <filter name="http-logging" /> <filter name="default-router"/> </filters> <destinations> <endpoint id="nbrepose" protocol="http" hostname="localhost" root-path="/" port="8080" default="true"/> </destinations> </repose-cluster> </system-model>
刚才说到建议装docker,其实吧,最简单的仍是直接跑jar~从maven上当他们最新的jar。运行java -jar valve-2.3.5.jar start -p 8888 -c /etc/repose/
执行起来。
而后呢,curl 127.0.0.1:8888/api/nbservice
就能看到它跑通啦~
在搜索这个主题内容的时候,遇到了这个老牌Freelancer网站的一个服务,竟然叫RESTful hire。其实就是在技能里要有RESTful这一项而已。难道,RESTful已经变成了一种“世界观”了么...