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

相关文章

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决