最近須要把一些功能拆分爲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已經變成了一種「世界觀」了麼...