arthurh / rest-proxifier
代理您的 REST API
Requires
- composer/composer: 1.0.0-alpha9
- hassankhan/config: 0.7.*
- jenssegers/proxy: ~2.2
- league/plates: ~3.1
- league/route: ~1.1
- monolog/monolog: ~1.13
- orange-opensource/cf-helper-php: 1.3.1
- sphring/sphring: ~0.9
- tedivm/stash: 0.12.*
- vectorface/whip: 0.2.*
Requires (Dev)
- filp/whoops: ~1.1
- phpunit/phpunit: ~4.5
README
本项目的目标是代理您的 REST API。
为什么要这样做?
首先,当我发现一些 REST API 没有处理 CORS 时,我就开始了这个项目。
例如,本项目将为 angularjs 项目重新注入 CORS 头。
本项目还将缓存读取请求的响应。
注意: Rest-proxifier 使用 pathinfo,因此请设置您的 Web 服务器使用它。
注意2: 本项目已准备好 Cloud Foundry,因此您也可以在 Cloud Foundry 中使用它来处理 uaa REST API 等。
安装
通过 Composer,当然。
$ composer create-project arthurh/rest-proxifier path/
如何使用
您可以使用多种方式使用 rest-proxifier
- 从配置文件代理
- 如果您使用 CloudFoundry,则从 CloudFoundry 服务代理
- 从数据库条目代理
这三种方式可以同时使用,没有限制。
对于简单使用,请参阅 config/default.yml
proxyfy: - api: http://example.com route: /api #this is optionnal #request-header: # header-key: header-value #response-header: # header-key: header-value #response-content: ~ admin-ui: true #set to false to remove admin interface admin-ui-root: /admin #path to admin ui rewriting: false #set to true if you use rewriting to point directly on index.php caching-time: 20 minutes #set to false to remove caching log-request: true #set to false to stop logs user request to proxify database: false #or uri to database, e.g: mysql://root:password@localhost/mydb or special uri for sqlite: sqlite:/path, this is optionnal
此文件可以使用 json 或 xml 重新编写,它使用此依赖项 noodlehaus/config,因此如果您不使用 yaml,请遵循此依赖项的 schema。
对于此默认配置,有一个示例,一个路由已经设置。
您应该尝试去 http://<my hostname>/index.php/api,然后 rest-proxifier 将使用 CORS 头响应页面 http://example.com。
如果您执行 http://<my hostname>/index.php/api/other/verb/for/api,rest-proxifier 将响应 http://example.com/other/verb/for/api。
管理界面
默认情况下,您有一个位于 http://<my hostname>/index.php/admin 的界面。
您可以使用它仅在一个数据库上添加更多代理。
配置文件中的代理无法使用此界面修改,目的是让这些代理始终可访问。
对于 Cloud Foundry 用户
这部分仅适用于使用 Cloud Foundry PaaS 的人。
您可以使用包含 proxy(使用正则表达式查找服务)的名称创建一个服务(例如,使用此 json 值)
[
{
"api": "http://example.com",
"route": "/api"
}
]
然后 rest-proxifier 将自动绑定到该服务
您还可以创建一个数据库服务,其名称应包含以下值之一(使用正则表达式查找服务)
my(用于 mysql)dbdatabaseoracleocipostgrespgsqlmaria
然后 rest-proxifier 将自动将数据库绑定到该服务