热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sofagraphql2restapiwebhook试用

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

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

 
 
 
 

推荐阅读
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 理解HTTP状态码及其应用
    本文详细解析了HTTP状态码的分类及常见代码的意义,帮助开发者和用户更好地理解和解决网络请求中遇到的问题。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • VSCode中实现大型项目函数跳转的方法
    在处理大型代码项目时,简单的C/C++插件往往无法满足需求。本文介绍如何通过配置GNU Global等工具,在VSCode中实现高效的函数跳转。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 第三周课堂测试1、使用汇编语言编写指令时,用一些简单的容易记忆的符号来代替二进制指令,比机器语言更为方便,属于高级语言。(B ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • Linux 存储堆栈架构图
    本文提供了一张清晰的Linux存储堆栈架构图,并对比了多种iSCSI后端解决方案,如LIO和STGT。文中还提供了详细的资源链接,帮助读者深入了解这些技术。 ... [详细]
  • 本文介绍了如何在现有Ceph集群中添加新节点以扩展存储容量,并确保在不中断服务的情况下完成这一操作。文章详细描述了新节点的安装配置步骤及数据重新平衡的方法。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
author-avatar
月獠_189
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有