1. Installation
略衔肢。
每個平臺的安裝方式不一樣庄岖,我目前使用的是 Debian 8來安裝的。
數(shù)據(jù)庫:Postgres 9.4
2. Quickstart
-
start kong
kong start # 可以同 -c <path_to_config> 的選項指向配置文件角骤。默認(rèn)在/etc/kong下邊
-
驗證是否啟動成功
-
:8000
:API 請求的代理層端口 -
:8001
:RESTful Admin API for configuration
-
-
其他
kong stop kong reload
3. 添加 API
-
使用 RESTful API 添加你的 API
curl -i -X POST \ --url http://localhost:8001/apis/ \ --data 'name=mockbin' \ --data 'upstream_url=http://mockbin.com/' \ --data 'request_host=mockbin.com'
-
驗證你的 API 是否被添加
出于安全考慮隅忿,建議啟用 Request Size Limiting 插件,防止 DOS 攻擊
HTTP/1.1 201 Created Content-Type: application/json Connection: keep-alive { "request_host": "mockbin.com", "upstream_url": "http://mockbin.com/", "id": "2eec1cb2-7093-411a-c14e-42e67142d2c4", "created_at": 1428456369000, "name": "mockbin" }
-
通過 Kong 轉(zhuǎn)發(fā)你的請求
以下代碼驗證 Kong 會正確的轉(zhuǎn)發(fā)你的請求到你的 API:
$ curl -i -X GET \ --url http://localhost:8000/ \ --header 'Host: mockbin.com'
成功返回response邦尊,意味著 Kong 轉(zhuǎn)發(fā)了請求到 我們第一步中設(shè)置的upstream_url了背桐,并給我們返回了信息回來。Kong 知道這么做的原因是通過我們上邊請求中定義的
--header
啟動插件
Kong 的核心部分就是通過插件的高擴展性蝉揍。通過插件可以容易在 API 上添加新的功能或者讓你的 API 易于管理链峭、
給 API 配置插件
$ curl -i -X POST \
--url http://localhost:8001/apis/mockbin/plugins/ \
--data 'name=key-auth'
# 給之前創(chuàng)建的mockbin的 API 添加插件
# 這個插件接收一個 config.key_names 的參數(shù),默認(rèn)值是:apiKey. 它是在headers和 parameters names(兩種都支持)
驗證這個插件是否正確的配置
$ curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: mockbin.com'
# 如果沒有在 header 或者 parameters里指定 apiKey, 這個請求返回 403 Forbidden
添加消費者(Consumers)
上一個section說了怎么添加插件到Kong又沾,這個 section 將學(xué)會怎么添加消費者到 Kong 的實例中弊仪。
消費者是關(guān)系到誰訪問你的 API的時候,可以用來tracking\access management等等杖刷。
通過 API 創(chuàng)建一個消費者
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason"
# Kong 可以接收一個 custom_id 的參數(shù)励饵,用來創(chuàng)建消費者的時候關(guān)聯(lián)已存在的用戶數(shù)據(jù)庫
為消費者設(shè)定一個 key 憑證
$ curl -i -X POST \
--url http://localhost:8001/consumers/Jason/key-auth/ \
--data 'key=ENTER_KEY_HERE'
驗證創(chuàng)建的消費者憑證是否有效
$ curl -i -X GET \
--url http://localhost:8000 \
--header "Host: mockbin.com" \
--header "apikey: ENTER_KEY_HERE"