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

 
 
 
 

sofa graphql 2 rest api webhook 试用的更多相关文章

  1. sofa graphql 2 rest api 试用

      大部分代码还是来自sofa 的官方文档,同时添加了docker && docker-compose集成 备注: 代码使用typescript 同时运行的时候为了方便直接运行使用ts ...

  2. sofa graphql 2 rest api框架

    sofa 是一个出发点不一样的工具,提供了从graphql 2 rest 的处理,一般现有的框架都在 关注的是rest 2 graphql (大部分还是基于swagger.open api 标准进行设 ...

  3. 记一次通过c#运用GraphQL调用Github api

    阅读目录 GraphQL是什么 .net下如何运用GraphQL 运用GraphQL调用Github api 结语 一.Graphql是什么 最近在折腾使用Github api做个微信小程序练练手,本 ...

  4. 人人都是 API 设计师:我对 RESTful API、GraphQL、RPC API 的思考

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 有一段时间没怎么写文章了,今天提笔写一 ...

  5. Gravitee.io api gateway 试用

    以前写过几篇关于整体介绍的以及 使用docker 运行的简单说明,有了docker-compose 环境我们可以 方便的进行测试使用了. 环境准备 docker-compose 文件   versio ...

  6. sqler sql 转rest api javascript 试用

    sqler 内嵌了一个js 引擎的实现(基于goja,当我们配置了exec的配置之后 调用宏(redis 接口)或者rest api 的时候会有一个全局变量$result ,保存了执行的结果,我们可以 ...

  7. QLoo graphql engine 学习二 基本试用(kubernetes)

    已经测试过docker&& docker-compose 的运行模式,下面测试下kubernetes的运行模式 kubernetes 我使用docker for mac qloo 安装 ...

  8. QLoo graphql engine 学习一 基本试用(docker&&docker-compose)

      说明:使用docker-compose 进行安装 代码框架 使用命令行工具创建 qlooctl install docker qloo-docker 运行qloo&&gloo 启动 ...

  9. hasura graphql server event trigger 试用

    hasura graphql server 是一个很不错的graphql 引擎,当前版本已经支持event triiger 了 使用此功能我们可以方便的集成webhook功能,实现灵活,稳定,快捷的消 ...

随机推荐

  1. python学习二三事儿(转,整)

    Python 标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分大小 ...

  2. mysql创建存储过程,定时任务,定时删除log

    -- 创建存储过程 清除30天前的日志create procedure deleteLog()BEGINdelete from contract_vlog where create_time<D ...

  3. L253 Valentine's Day

    Are you ready for Valentine's Day, my fellow stargazers? Not sure if you know this, but the astrolog ...

  4. Linux:http配置

    http配置 1.挂载系统:mount /dev/cdrom /mnt/cdrom2.安装:rpm -ivh httpd-2.4.6-88.el7.centos.x86_64.rpm2.启动服务:sy ...

  5. 点击li ,父辈出现; 子级,子辈不出现. prevUntil ---> 前面多个, 截止到 截止元素 , prev([expr]) --> 前面一个.

    要求: 1. 点击第一级   [1知识点] 的时候,  [1知识点] 前有 圆圈. 点击 第二级 [1-1知识点, 1-2知识点, 1-3知识点] 时 , [1知识点]出现 圆圈. 2. 点击 第一级 ...

  6. ubantu清理垃圾文件操作

    安装的ubuntu 18.01 , 随着使用的时间变长,陆陆续续使用了不少的软件, 更新了不少的软件包. 导致了现在ubuntu 系统反应速度严重下降. 下面是几种清理linux系统下冗余垃圾的命令, ...

  7. wx小程序修改swiper 点的样式

    <swiper class="swiper-box" indicator-dots="{{ indicatordots }}" autoplay=&quo ...

  8. 【Python】进程-控制块

    一.进程控制块 PCB (Process Control Block): 存放进程的管理和控制信息的数据结构称为进程控制块.它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时 ...

  9. html页面中的title设置为空格

    这样页面加载时,title会显示为空,而不是当前页面的URL. document.title='\u200E'  

  10. React Native Headless JS(后台任务)(转载)

    React Native Headless JS(后台任务) Headless JS是一种使用js在后台执行任务的方法.它可以用来在后台同步数据.处理推送通知或是播放音乐等等. JS端的API 首先我 ...