gpt4 book ai didi

rest - 用于 Restful API 的适配器代理

转载 作者:行者123 更新时间:2023-12-04 15:45:15 26 4
gpt4 key购买 nike

这是一个普遍的“可用的技术”问题。

我的公司提供了一个带有 RESTful API 的 Web 应用程序。但是,它对我的​​需求来说太慢了,而且一些结果的格式很尴尬。

enter image description here

我想用代理/适配器服务器包装他们的 RESTful 服务器,所以当你连接到代理时,你会得到 RESTful API,我希望真正的 API 提供。

enter image description here

所以它需要做几件事:

  • 传递大多数请求
  • 缓存一些请求
  • 在原始服务器上做一些额外的请求来检测请求是否可缓存

  • enter image description here

    例如:记录中的字段请求: GET/records/id/field 可能很慢,但有一个指纹请求 GET/records/id/fingerprint 总是很快。如果存在指纹的 GET/records/1/field2 缓存 feedbeef ,那么我需要检查原始服务器是否还有指纹 feed beef在提供缓存版本之前。
  • 修复某些响应的标题 - 例如内容类型,基于路径
  • 对一些大的内容做流处理,例如

  • 获取/记录/id/附件/1234

    enter image description here

    以文本格式返回一个 100Mb 的日志文件

    从文件中删除空字符
    可选地重新编码日志以过滤掉不相关的行,从而减少客户端的负载
    缓存过滤后的版本以供以后请求。

    虽然我可以修改客户端来实现这个功能,但是这样的代码不能被其他客户端(不同的语言)重用,并且使客户端逻辑复杂化。

    我查看了 clojure/ring 是否可以做到这一点,虽然有一个不错的小代理中间件,但据我所知,它不能处理流媒体内容 - 整个 100Mb 都必须下载。而且它还不包括任何缓存逻辑。

    我看了一下 squid 是否可以做到这一点,但我对这项技术并不熟悉,而且它似乎主要关心的是传递请求而不是动态修改它们。

    我正在寻找可以找到正确技术来实现这一点的提示。如果学习一门新语言能让我获得一种非常简单的方法,那么我主要是语言不可知论者。

    最佳答案

    我相信你应该选择一个更容易实现自定义业务逻辑的平台。以下 Web 应用程序框架提供与 REST API 的轻松连接,并允许您创建可用作 REST 代理的 Web 应用程序:

  • Play framework (Java + Scala)
  • express + Node.js (Javascript)
  • Sinatra ( ruby )

  • 我对 Play 比较熟悉,我知道它提供了缓存实用程序,您会发现它很有用,并且还可以通过许多插件进行扩展。

    如果你熟悉 Scala,你也可以看看 Finagle .它是 Twitter 的基础架构团队构建的一个框架,用于提供与协议(protocol)无关的连接。 REST 到 REST 代理可能有点过头了,但它提供了您可能会觉得有用的抽象。

    您还可以查看一些第 3 方服务,例如 Apitools ,它允许以编程方式(在 lua 中)创建代理。 Apirise是一项类似的服务(我是其中的联合创始人),旨在通过用户友好的 UI 提供类似的功能。

    关于rest - 用于 Restful API 的适配器代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453989/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com