[英]Adapter Proxy for Restful APIs
這是一個普遍的'什么技術可用'的問題。
我的公司提供了一個帶有RESTful API的Web應用程序。 但是,它對我的需求來說太慢了,而且一些結果是笨拙的格式。
我想用代理/適配器服務器包裝他們的restful服務器,所以當你連接到代理時,你得到了我希望真正提供的RESTful API。
所以它需要做一些事情:
例如:記錄中有一個字段的請求:GET / records / id / field可能很慢,但是指紋請求GET / records / id / fingerprint總是很快。 如果指紋feedbeef
存在GET / records / 1 / field2的feedbeef
,那么我需要在提供緩存版本之前檢查原始服務器是否還有指紋feed beef
。
GET / records / id / attachments / 1234
以文本格式返回100Mb日志文件
從文件中刪除空字符可選地重新編碼日志以過濾掉不相關的行,從而減少客戶端緩存上的負載以用於以后的請求。
雖然我可以修改客戶端以實現此功能,但此類代碼不能重用於其他客戶端(不同語言),並使客戶端邏輯復雜化。
我看看clojure / ring是否可以做到這一點,雖然有一個很好的小代理中間件,但據我所知,它不能處理流媒體內容 - 整個100Mb必須下載。 它還沒有包含任何緩存邏輯。
我看一下魷魚是否可以做到這一點,但我不熟悉這項技術,而且似乎主要關注的是通過請求而不是動態修改它們。
我正在尋找提示,我可能會找到正確的技術來實現這一點。 如果學習一門新語言讓我能夠訪問一種非常簡單的方法,那么我主要是語言無關。
我相信您應該選擇一個更容易實現自定義業務邏輯的平台。 以下Web應用程序框架提供了與REST API的輕松連接,並允許您創建可用作REST代理的Web應用程序:
我對Play更熟悉,我知道它提供了一些有用的緩存工具,並且還可以通過許多插件進行擴展。
如果你熟悉Scala,你也可以看看Finagle 。 它是一個框架構建,是Twitter的基礎架構團隊,提供與協議無關的連接。 REST到REST代理可能有點過分,但它提供了您可能覺得有用的抽象。
您還可以查看一些第三方服務,如Apitools ,它允許以編程方式創建代理(在lua中)。 Apirise是一個類似的服務(我是其中的聯合創始人),打算通過用戶友好的UI提供類似的功能。
Beeceptor完全符合您的要求。 它插入您的Web應用程序和原始API之間以路由請求。
(注意:這是一個無恥的插件,我是Beeceptor的作者,並認為它應該幫助你和其他開發人員。)
https://github.com/nodejitsu/node-http-proxy看起來很有用 - 雖然我還不知道它是否可以流轉碼進行轉碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.