# api-gateway **Repository Path**: tbc521/api-gateway ## Basic Information - **Project Name**: api-gateway - **Description**: 微服务网关,提供http异步转发、过滤等功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2017-03-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 提供的功能 * 提供统一的对外API接口 * 请求处理链: * http请求校验 * ip限制:黑白名单、过滤策略 * 限流:限制调用次数(比如一分钟只能调用10次) * 认证:auth * 请求转发 * 简单的负载均衡功能 ## 约定[注:可通过配置修改约定] 1. 默认请求uri的第一部分为服务名; 2. 默认不做协议转换,服务通过HTTP调用[暂时仅提供http支持]; 3. 默认不做请求方法、参数、uri的转换,获取到服务地址后直接转发; 4. 对响应结果不做处理,仅对无响应、错误响应、异常等信息进行反馈; 5. 默认使用内部Map缓存,可支持redis; 6. 默认通过配置文件获取服务地址,可通过zk ## 说明 1. 基于Netty,网络IO操作都是异步; 2. 业务处理基于Netty的ChannelPipeline处理链; ## 配置 * *_application.properties_* - 应用配置,放置一些通用配置信息,如:监听的端口号、心跳拦截uri、心跳响应信息等; * *_serviceRouter.properties_* - 服务路由配置,存放服务名和服务地址的映射(必须配置,暂不支持权重) * 配置说明:服务=服务地址(加端口),多地址用逗号分隔 * 示例,如有服务名demo,对应两个ip地址: `demo=192.168.1.1:8080,127.0.0.1:8081` * *_serviceConfigTable.xml_* - 服务信息映射配置,存放请求uri到服务信息的映射(完全使用默认约定时,可不配) * 配置说明 * serviceName:服务名 * requestUri:请求uri * contentPath:需要在原请求uri前拼接的contentPath字符串 * httpMethod:请求方法(暂 * isLogin: 是否需要登录 * isEmpower: 是否需要授权 * serviceStatus:服务状态(预留,暂不支持),1:启用;2:禁用; * protocolType:服务请求类型(预留,暂只支持http) * 约定说明 * 服务名的获取策略,暂时只支持截取请求uri的第一段 * 可以不配置该映射,将按默认配置生成服务信息对象:不需要登陆验证、不需要授权验证、使用原始请求方法和uri进行http转发 ## 快速使用 1. 在`serviceRouter.properties`中配置要使用的服务地址; 2. 在`application.properties`中配置要监听的端口,以及相关handler; 3. 在`serviceConfigTable.xml`中配置服务信息(如只需要使用默认约定,则可以不配置) 4. 启动应用: java pub.tbc.api.ApiGatewayApplication