0

REST 和 API 网关的新功能。

我已经在开发机器上安装了带有 Cassandra 的 Kong,我正在尝试添加我的 API(spring-boot 应用程序),但阅读文档我正在努力使其工作。

我的 API:

http://ff-nginxdev-01:9003/fund-information-services/first-information/fund/{fundId}

当我跑步时

http http://ff-nginxdev-01:9003/fund-information-services/first-information/fund/630

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    Date: Fri, 25 Nov 2016 14:47:30 GMT
    Transfer-Encoding: chunked
    X-Application-Context: application:9003

    {
        "assetSplit": {
            "allocationHistories": [
                {
                    "key": {
                        "asset": {
                            "description": "Other Far East",
                            "id": 18
                        },
                        "assetSplit": "09",
                        "effectiveDate": 1430348400000
                    },
    ......
    ......

一切看起来都很好,我能够检索 Json 消息。

在 Kong 中添加 API:

http POST http://ff-nginxdev-01:8001/apis/ name=fund-information upstream_url=http://ff-nginxdev-01:9003/ request_path=/fund-information-services


    HTTP/1.1 201 Created
    Access-Control-Allow-Origin: *
    Connection: keep-alive
    Content-Type: application/json; charset=utf-8
    Date: Fri, 25 Nov 2016 14:39:45 GMT
    Server: kong/0.9.4
    Transfer-Encoding: chunked

    {
        "created_at": 1480084785000,
        "id": "fdcc76d7-e2a2-4816-8f27-d506fdd32c0a",
        "name": "fund-information",
        "preserve_host": false,
        "request_path": "/fund-information-services",
        "strip_request_path": false,
        "upstream_url": "http://ff-nginxdev-01:9003/"
    }

测试 Kong API 网关:

http http://ff-nginxdev-01:8000/fund-information-services/first-information/fund/630

HTTP/1.1 502 Bad Gateway
Connection: keep-alive
Content-Type: text/plain; charset=UTF-8
Date: Fri, 25 Nov 2016 14:44:33 GMT
Server: kong/0.9.4
Transfer-Encoding: chunked

An invalid response was received from the upstream server

我知道我错过了一些东西,但我不清楚。

4

2 回答 2

0

默认情况下,动态 SSL 插件会将特定的 SSL 证书绑定到 API 中的 request_host。您只需request_path在 API 中定义,这意味着 SSL 插件在您使用request_path.

您可以阅读更多内容以了解为什么会这样:this issue

为了使您的请求有效,我认为您应该阅读有关如何代理 API 的内容:代理参考

这是我对您的问题的解决方案:

方法一:将“strip_request_path”改为true

"strip_request_path": true

此方法假设您没有先指定 request_host

方法二:改用 request_host

"request_host" : "your_api"

然后在您的请求标头中,您应该添加此 request_host:

示例请求:

curl -i -X POST --url http://ff-nginxdev-01:8000/fund-information-services/first-information/fund/630 --header 'Host: your_api' 

它会起作用

于 2017-01-20T05:13:48.757 回答
0

你错过了 kong “fund-information” 知道的 api 名称,所以如果你这样做

http POST http://ff-nginxdev-01:8001/apis/ name=fund-information upstream_url= http://ff-nginxdev-01:9003 request_path=/fund-information-services

你的测试网址是 http ://ff-nginxdev-01:8000/fund-information/first-information/fund/630

于 2017-04-29T08:07:06.470 回答