一个轻量级的Dify请求转发服务,基于Spring Boot实现,支持多应用配置和用户认证。
- ✅ 多应用路由配置
- ✅ 基于路径前缀的智能路由匹配
- ✅ 可扩展的用户认证机制
- ✅ 支持JSON和Multipart请求
- ✅ 完善的日志记录
- 添加依赖到你的Spring Boot项目:
<dependency>
<groupId>org.hzm</groupId>
<artifactId>dify-router</artifactId>
<version>1.0.0</version>
</dependency>- 配置应用路由:
router:
appConfigs:
materials: # 应用名称
user-auth: true # 启用用户认证
base-url: http://my.dify.com/v1 # 目标服务地址
start-with-url: /api/dify_proxy/materials # 路由前缀
api-key: app-xxx # API密钥- 启动应用,所有匹配
/api/dify_proxy/materials/**的请求将被转发到http://my.dify.com/v1
router:
appConfigs:
app1:
user-auth: true
base-url: http://service1.example.com
start-with-url: /api/app1
api-key: key1
app2:
user-auth: false
base-url: http://service2.example.com
start-with-url: /api/app2
api-key: key2路由匹配规则:
- 按路径前缀匹配
- 前缀长的优先匹配
- 未匹配的请求不会被转发
默认从以下位置提取用户信息:
- URL参数:
?user=xxx - JSON请求体:
{"user": "xxx"} - Multipart表单:
user=xxx
如需自定义验证逻辑,实现UserValidator接口:
@Component
public class CustomUserValidator implements UserValidator {
@Override
public void validateUser(String user, Map.Entry<String, RouterConfig.RouterAppConfig> appConfig, String path) {
// 自定义验证逻辑
}
}欢迎提交Pull Request或Issue。
- Fork仓库
- 创建特性分支 (
git checkout -b feature/xxx) - 提交更改 (
git commit -am 'Add some feature') - 推送到分支 (
git push origin feature/xxx) - 创建Pull Request