zoukankan      html  css  js  c++  java
  • sofa graphql 2 rest api webhook 试用

    sofa 的webhook实际上就是将graphql 的subscription 进行了扩展,当接受到sub 请求的时候
    再做一次http 的转发处理,方便rest api 的访问

    环境准备

    环境还是使用的docker-compose ,以前的代码,只是添加了一个webhook 的容器镜像
    可以参考: https://www.cnblogs.com/rongfengliang/p/10326302.html

    • docker-compose 文件
    version: "3"
    services:
      api:
        build: ./
        image: dalongrong/sofa-graphql2rest
        ports:
        - "4000:4000"
      webhook:
        image: jeffail/benthos
        volumes:
        - "./configs/webhook.yaml:/benthos.yaml"
        ports:
        - "4195:4195"
    • webhook config
    input:
      type: broker
      broker:
        inputs:
          - type: http_server
            http_server:
              path: /post/customer1
            processors:
              - type: text
                text:
                  operator: prepend
                  value: "Customer 1 received: "
          - type: http_server
            http_server:
              path: /post/customer2
            processors:
              - type: text
                text:
                  operator: prepend
                  value: "Customer 2 received: "
          - type: http_server
            http_server:
              path: /post/customer3
            processors:
              - type: text
                text:
                  operator: prepend
                  value: "Customer 3 received: "
    output:
      type: stdout

    启动&&测试

    • 启动
    docker-compose up -d
    • 添加webhook
      请求的同时会启动webhook 的rest 请求
      请求的参数格式如下:
    {
     "subscription":"sub schema name ",
     "variables":" some field just for filter data",
     "url": "the webhook address"
    }

    使用curl 请求

    curl -X POST 
      http://localhost:4000/webhook 
      -H 'Content-Type: application/json' 
      -H 'Postman-Token: f2098fda-1108-4981-83b4-7eae3f3828c8' 
      -H 'cache-control: no-cache' 
      -d '{
     "subscription":"onBook",
     "url":"http://webhook:4195"
    }'

    返回数据
    包含了webhook 的id

    curl -X POST 
      http://localhost:4000/webhook 
      -H 'Content-Type: application/json' 
      -H 'Postman-Token: f2098fda-1108-4981-83b4-7eae3f3828c8' 
      -H 'cache-control: no-cache' 
      -d '{
            "subscription":"onBook",
            "url":"http://webhook:4195"
    }'
    {"id":"2de735c3-5698-4cdd-9986-1941d1e20c88"}
    • 修改数据进行测试
      可以通过graphql 或者rest api

      webhook 数据
      docker-compose logs -f webhook
    webhook_1 | get webhook message: {"data":{"onBook":{"id":"23337599919478412","title":"dalongdemo"}}}
    • webhook 订阅的删除以及修改
      删除操作
      DELETE /webhook/:id - 删除webhook
      POST /webhook/:id- 更新webhook

    说明

    sofa 的设计还是很不错的,给与我们一个反向的操作,一般我们的方式是rest2graphql ,但是这个是graphql2rest 同时提供了很不错的
    功能支持

    参考资料

    https://github.com/Urigo/sofa
    https://github.com/rongfengliang/sofa-graphql2rest-docker-compose

  • 相关阅读:
    yaf(3) 正则路由
    yaf(1) 配置文件
    PHP 分页URL设计
    smarty模版目录疑问
    yaf(5) smarty
    yaf(2) layout 自定义目录结构
    php 倒计时出现0的情况
    PHP 单一入口框架设计简析
    利用jquery.load()实现html框架效果
    yaf(4) Yaf_Loader()
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10327184.html
Copyright © 2011-2022 走看看