簡體   English   中英

適用於Restful API的適配器代理

[英]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之間以路由請求。

  • 對於緩存一些響應的用例,您可以創建規則。 這樣它就不會達到原始端點。
  • 可以模擬對原始API的請求,您可以檢查響應
  • 您可以模擬延遲。

(注意:這是一個無恥的插件,我是Beeceptor的作者,並認為它應該幫助你和其他開發人員。)

https://github.com/nodejitsu/node-http-proxy看起來很有用 - 雖然我還不知道它是否可以流轉碼進行轉碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM