通过graphql mesh 暴露HAProxy Data Plane API graphql api

graphql mesh是一个很不错的graphql 框架,提供了多种数据的统一访问,以下是通过graphql mesh 暴露HAProxy Data Plane API
为graphql api,以前有写过一个使用swagger-to-graphql 转换的,参考https://www.cnblogs.com/rongfengliang/p/11445046.html

环境准备

  • node 环境
 
├── README.md
├ .meshrc.yaml
├── docker-compose
│   ├── Dockerfile
│   ├── docker-compose.yaml
│   ├── haproxy.cfg
│   └── prometheus.yml
├── haproxy-api.json
├── package.json
└── yarn.lock
  • 说明
    docker-compose 为基于 docker-compose 的本地运行环境,可以方便本地测试,具体的配置参考源码
    haproxy-api.json 为swagger api 指南,可以通过api 请求获取
    package.json 主要是依赖以及npm script 定义
 
{
  "dependencies": {
    "@graphql-mesh/cli": "^0.1.17",
    "@graphql-mesh/openapi": "^0.1.17",
    "@graphql-mesh/runtime": "^0.1.17",
    "graphql": "^15.0.0"
  },
  "scripts": {
    "start": "graphql-mesh serve"
  }
}

.meshrc.yaml 定义配置,主要是关于swagger api 的

sources:
  - name: haproxy
    handler:
      openapi:
        source: ./haproxy-api.json

注意因为默认haproxy 是有安全控制的,我们可以通过basic auth 解决,格式为:http://<username>:<password>@<host>:<port>/vX

启动&&效果

  • 启动
yarn start
  • 效果

 

 

操作流程

可以参考官方文档,或者以前写的一些文档

  • 流程
1.  获取api地址(目前包含了v1,v2,推荐使用v2),比如 /v1/specification,/v2/specification
2.  代码生成(可以通过restapi,可选)
3.  获取配置版本,通过/vX/services/haproxy/transactions 或者官方介绍的一个/vX/services/haproxy/configuration/frontends
4.  创建一个事物(一次提交操作) /vX/services/haproxy/transactions?version=<version> post 请求
5.  创建一个backend /vX/services/haproxy/configuration/backends?transaction_id=<transid>  post 请求 
6.  添加server /vX/services/haproxy/configuration/servers?backend=<backendname>&transaction_id=<transid> post 请求 
7.  创建frontend /vX/services/haproxy/configuration/frontends?transaction_id=<transid> post 请求 
8.  添加bind /vX/services/haproxy/configuration/binds?frontend=<frontend>&transaction_id=<trandis> post 请求 
9.  提交事物 /vX/services/haproxy/transactions/<transid> post 请求

https://www.cnblogs.com/rongfengliang/p/11445046.html
https://www.cnblogs.com/rongfengliang/p/12914925.html

说明

graphql mesh 是一个很不错的框架,可以加速我们的数据集成以及访问

参考资料

https://www.cnblogs.com/rongfengliang/p/11445046.html
https://www.cnblogs.com/rongfengliang/p/12914925.html
https://github.com/Urigo/graphql-mesh
https://www.haproxy.com/blog/announcing-haproxy-dataplane-api-20/
https://github.com/rongfengliang/graphql-mesh-haproxy-dataplanapi

posted on 2020-05-19 10:43  荣锋亮  阅读(345)  评论(0编辑  收藏  举报

导航