一款可以http转dubbo协议互相转换的开源网关

781 阅读1分钟

我最近找到一个国产的开源网关Apinto,纯go语言编写,并且支持多种协议转换

我给你简单展示下http协议转dubbo协议,Apinto的安装步骤我就不展示了,只看效果。

Apinto地址如下:基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。

准备好一个java的dubbo服务端

package cn.demo.model;

public class User {
    String name;
    int id;
    Integer age;
}

package cn.demo.api.UserService;

import cn.demo.model.User;
import java.util.List;
import java.util.Map;

public interface UserService {
    User sayHello(User user);//输入什么输出什么
}

接下来准备配置Apinto

  • 创建一个全局的http转dubbo插件
curl -X POST  'http://127.0.0.1:9400/api/setting/plugin' \
-H 'Content-Type:application/json' \
-d '{
    "plugins":[{
        "id":"eolinker.com:apinto:http_to_dubbo2",
        "name":"http-to-dubbo",
        "status":"enable"
    }]
}'
  • 创建一个上游服务,绑定dubbo服务
curl -X POST  \
  'http://127.0.0.1:9400/api/service' \
  -H 'Content-Type:application/json' \
  -d '{
   "name": "dubbo_service",
   "driver": "http",
   "description": "",
   "timeout": 3000,
   "retry": 3,
   "scheme": "HTTP",
   "nodes": ["127.0.0.1:20880"],
   "balance": "round-robin"
}'
  • 创建一个http路由,绑定上游服务和http转dubbo协议的插件,并配置相关插件信息
curl -X POST  \
  'http://127.0.0.1:9400/api/router' \
  -H 'Content-Type:application/json' \
  -d '{
   "name": "http_router",
   "driver": "http",
   "description": "",
   "location": "/sayHello",
   "rules": [],
   "plugins":{
     "http-to-dubbo":{
       "disable":false,
       "config":{
         "method":"sayHello",
         "service":"com.demo.api.UserService",
         "params":[
           {
             "class_name":"com.demo.model.User"
           }
         ]
       }
     }
   },
   "service": "dubbo_service@service",
   "template":""
}'

# config中的method为方法名,service为服务名 params为传递给dubbo服务的字段名
  • 发起http请求测试
curl -X POST  \
  'http://127.0.0.1:8099/sayHello' \
  -H 'Content-Type:application/json' \
  -d '{
   "name": "xxx",
   "id":10
  }'

执行后结果如下,表示转发成功啦

image.png