API Gateway——KONG简单入门

2024-06-04 15:18
文章标签 简单 入门 api gateway kong

本文主要是介绍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

 

 

 

这篇关于API Gateway——KONG简单入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030413

相关文章

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除