首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在loopback 4中使用openapi- to -graphql启用graphql订阅

LoopBack 4是一款基于Node.js的开源框架,用于构建RESTful API和微服务应用程序。OpenAPI-to-GraphQL是一个用于将OpenAPI规范转换为GraphQL服务的工具。在LoopBack 4中使用OpenAPI-to-GraphQL启用GraphQL订阅的步骤如下:

  1. 首先,确保你已经安装了LoopBack 4的开发环境,并创建了一个LoopBack 4项目。
  2. 在项目根目录下,使用npm或yarn安装@loopback/openapi-to-graphql@loopback/graphql两个包:
代码语言:txt
复制
npm install @loopback/openapi-to-graphql @loopback/graphql
  1. 在项目的根目录下创建一个名为graphql.server.ts的文件,并将以下代码复制到文件中:
代码语言:txt
复制
import {BootMixin} from '@loopback/boot';
import {ApplicationConfig} from '@loopback/core';
import {GraphQLBindings, GraphQLComponent} from '@loopback/graphql';
import {RepositoryMixin} from '@loopback/repository';
import {RestApplication, RestBindings, toInterceptor} from '@loopback/rest';
import {ServiceMixin} from '@loopback/service-proxy';
import {OpenApiToGraphQL} from '@loopback/openapi-to-graphql';

export class MyApp extends BootMixin(ServiceMixin(RepositoryMixin(RestApplication))) {
  constructor(options: ApplicationConfig = {}) {
    super(options);

    // Set up GraphQL component
    this.component(GraphQLComponent);

    // Enable GraphQL subscriptions
    this.configure(GraphQLBindings.GRAPHQL_SUBSCRIPTIONS).to(true);
  }

  async boot() {
    await super.boot();

    // Get the OpenAPI spec
    const openApiSpec = await this.restServer.getApiSpec();

    // Create a GraphQL schema from the OpenAPI spec
    const openApiToGraphQL = new OpenApiToGraphQL({
      openApiSpec,
    });
    const {schema, resolvers} = openApiToGraphQL.createSchema();

    // Register GraphQL schema and resolvers
    this.bind(GraphQLBindings.GRAPHQL_SCHEMA).to(schema);
    this.bind(GraphQLBindings.GRAPHQL_RESOLVERS).to(resolvers);
  }
}
  1. 打开你的src/index.ts文件,并将以下代码添加到文件中:
代码语言:txt
复制
import {MyApp} from './graphql.server';

export async function main(options: ApplicationConfig = {}) {
  const app = new MyApp(options);
  await app.boot();
  await app.start();

  console.log(`Server is running at ${app.restServer.url}`);
  console.log(`Try ${app.restServer.url}/graphql`);

  return app;
}

// Start the application
main().catch(err => {
  console.error('Cannot start the application.', err);
  process.exit(1);
});
  1. 运行你的LoopBack 4应用程序,使用以下命令:
代码语言:txt
复制
npm start
  1. 现在,你可以在浏览器中访问http://localhost:3000/graphql来打开GraphQL Playground,该工具提供了与GraphQL API交互的界面。
  2. 在GraphQL Playground中,你可以通过执行GraphQL查询、变异和订阅来测试你的API。使用OpenAPI规范定义的REST端点将自动转换为相应的GraphQL类型、查询和变异。

这是在LoopBack 4中使用OpenAPI-to-GraphQL启用GraphQL订阅的基本步骤。通过这种方式,你可以使用GraphQL来查询、变异和订阅你的LoopBack 4应用程序的数据。如果你想深入了解LoopBack 4的功能和其他相关内容,请参阅LoopBack 4文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring认证_什么是Spring GraphQL

请求必须使用 HTTP POST 和 GraphQL 请求详细信息作为 JSON 包含在请求正文中,提议的GraphQL over HTTP 规范中所定义 。...在 WebSocket 上使用 GraphQL 的主要原因是订阅,它允许发送 GraphQL 响应流,但它也可以用于具有单个响应的常规查询。处理程序将每个请求委托给Web 拦截链以进一步执行请求。...WebFlux 处理程序还使用非阻塞 I/O 和背压来流式传输消息,这很有效,因为在 GraphQL Java 中订阅响应是 Reactive Streams Publisher。...Boot starter 具有启用此功能的选项,有关详细信息或检查 或例如配置,请参阅Web 端点。...异常解决 GraphQL Java 应用程序可以注册 aDataFetcherExceptionHandler来决定如何在 GraphQL 响应的“错误”部分中表示来自数据层的异常。

2.9K20
  • 如何利用好BurpSuite在企业src中捡洞

    0x01 今天分享一些实用的BurpSuite插件实用技巧,帮助白帽子如何在竞争激烈的src挖掘中吃上一块肉。...3.Query 用于描述接口的查询类型,有Query(查询)、Mutation(更改)和Subscription(订阅)三种。...通常我们会借助在线工具来构造请求包 但是inql插件就极其方便了, GraphQL 端点粘贴到此处并点击加载 等待片刻,去使用attacker功能,便可以生成请求包,我们就可以愉快的测越权,注入等漏洞了...0x03 Autorepeater发现越权,未授权,甚至ssrf漏洞 Autorepeater可以说是复杂版本的Autorize,它可以针对细化参数实现更加准确的测试,通常涉及到的uuid,、suid...,在routevulscan配置好常见的未授权漏洞规则或者常见的,通常具有“一打一个准”的后台,nacos的后台登录口,druid未授权,swagger文档等,捡洞速度极快。

    71630

    GraphQL:现代API设计的革新

    本文将从GraphQL的基本概念、核心特性、实际使用以及优缺点等方面进行详细介绍。一、GraphQL的基本概念GraphQL是一种用于API的查询语言和运行时,用来满足客户端对数据的精确需求。...1.2 类型(Type)GraphQL使用强类型系统,每个类型都明确定义了其包含的字段及其类型。常见的类型包括标量类型(Int、String等)和对象类型(自定义的用户类型)。...2.3 单一端点传统的REST API通常会有多个端点,而GraphQL只需要一个端点,所有的查询、变更和订阅都通过这个端点进行。这简化了API的管理和使用。...单一端点:简化了API的使用和管理。实时性:通过订阅可以实现实时数据更新,适用于实时应用。4.2 缺点复杂性:对于简单的API,GraphQL可能显得过于复杂,需要学习和理解其概念和用法。...然而,GraphQL的学习曲线和复杂性也要求开发者深入理解其概念和使用方式。总体而言,GraphQL在构建高效、灵活的API方面具有广阔的应用前景。

    16610

    GraphQL 的入门指南

    由于刚刚开始使用 GraphQL,这将帮助我们继续学习GraphQL 更多的内容,而不必担心服务器配置,执行以下命令: npm install --save-dev graphpack 或者使用 yarn...这里就实现我们在 GraphQL 中的第一个查询,更改和订阅,打开界面如下: 你可以看到 GraphQL Playground,这是一个功能强大的 GraphQL IDE,可用于更好的开发工作流程。...类型字段可以是任何类型,并始终返回一种数据类型, Int,Float,String,Boolean,ID,对象类型列表或自定义对象类型。...subscription (订阅) — 当希望数据更改时,可以进行消息推送,使用 subscription 类型(针对当前的日趋流行的 real-time 应用提出的)。...当服务器中发生更新时,服务器将运行订阅中指定的 GraphQL 查询,并向客户机发送一个新更新的结果。 在这篇文章中,我们不打算讨论订阅,但是如果你想阅读更多关于订阅的信息,请单击这里。

    2K30

    GraphQL API 的新趋势:驱动数据交换的未来技术

    随着技术不断发展,新趋势和技术正在塑造开发人员创建和使用 GraphQL API 的方式。...GraphQL federation:扩展和集成微服务 GraphQL federation(GraphQL 联邦)技术,允许开发人员将多个 GraphQL 模式合并为一个统一的模式。...GraphQL 订阅实现实时数据 在现代应用程序中,实时数据变得越来越重要,而 GraphQL 订阅提供了一种支持实时更新和通信的订阅,使客户端应用程序能够在特定事件或数据更改发生时接收通知,为处理 GraphQL...新型安全技术(查询成本分析、查询深度限制以及持久化查询)正在出现,以帮助保护 GraphQL API 免受恶意查询和潜在数据泄露。 6....自定义指令 自定义指令提供了一种扩展 GraphQL API 功能的方式,允许开发人员定义可重复使用、特定于应用程序逻辑。

    30920

    何为GraphQL

    Facebook在2012年研发出了GraphQL并在2015年将其开源。 它快速地成长成为最热门的技术之一。许多创新公司在生产环境中使用GraphQL。...我强烈推荐使用它来测试不同的查询。 ? 使用GraphQL的特别查询 ? 一切都设定好了。 让我们导航到http://localhost:3000/graphql并找点乐子。...我们可以定义GraphQL变动来执行操作,添加,更新和删除图中的数据。 首先,让我们在模式中添加一个变动类型。...GraphQL不会窥探你的代码。 查询和突变都可以接受参数并返回数据。 它更像是语法糖,让你的模式更具人性化。 ? 高级主题 ? ? 订阅 订阅GraphQL的另一个杀手级的功能。...通过订阅,客户端可以订阅无论何时服务器状态发生变化都会触发的事件。 订阅是在后期被引入的,并以不同的方式通过不同的框架被实施的。 ? 验证 GraphQL将针对模式验证每个查询或变动。

    3.5K60

    graphw00f:一款功能强大的GraphQL服务器引擎指纹识别工具

    精心构建的查询请求会导致不同的GraphQL服务器实现对查询、突变和订阅做出不同的响应,以实现我们对后端引擎进行指纹识别并区分不同的GraphQL实现。...- Julia Strawberry - Python Tartiflette - Python GraphQL技术防御矩阵: 每个指纹技术(Graphene、Ariadne等)都有一个相关文档(例如...| Enabled by Default | N/A | Off by Default | 工具依赖: python3 requests 工具安装&运行: 首先,我们需要使用下列命令将该项目源码克隆至本地...: git clone git@github.com:dolevf/graphw00f.git 接下来,使用下列命令运行graphw00f,并查看工具帮助信息: python3 main.py -h Usage...工具使用: 识别GraphQL指纹 在这个例子中,我们将识别一个GraphQL节点的具体位置: python3 main.py -f -t https://demo.hypergraphql.org:8484

    1.2K20

    API协议设计的10种技术

    客户端可以通过发送HTTP请求来执行各种操作,获取资源、创建新资源、更新现有资源或删除资源。RESTful API的设计遵循一些基本原则,资源的表达、客户端-服务器架构、无状态性和缓存等。...当不完全理解客户端如何使用 API 时,也可以使用 GraphQL使用 GraphQL,不需要事先定义一个严格的契约。相反,可以根据客户端反馈逐步构建 API。 3....SOAP 是协议独立的,可以在各种网络协议上运行,HTTP、SMTP等。最常见的是在HTTP上使用SOAP,将SOAP消息封装在HTTP协议中进行传输。...SOAP消息的传输可以使用安全协议,HTTPS,以确保在网络上传输时的机密性和完整性。此外,SOAP还可以与其他安全标准(WS-Security)结合使用,提供更高级的安全性支持。 ....然而,尽管名称如此,该协议并不使用消息队列; 相反,它提供发布-订阅消息: 设备在特定主题上发布消息,所有订阅该主题的设备都接收该消息。

    36910

    为什么GraphQL是API的未来

    它已经收到了广泛的关注,并被许多大公司采用, Spotify,Facebook,GitHub,NYTimes,Netflix,沃尔玛等。...GraphQL 只需要一个端点,通过它我们可以在单个请求中获得尽可能多的数据。基本上 GraphQL 会将你的所有查询、修改和订阅封装在一个端点中,并供你调用。...看起来很神奇,但这就是 GraphQL使用 GraphQL,你只能获取所需的数据 没有过度获取或未被充分利用的信息,你只获取自己需的数据。还记得我们最初讨论的性能问题吗?...GraphQL 是一种查询语言,这意味着你可以使用任何自己熟悉的语言。在编写本教程时,GraphQL 支持的语言已经超过了 12 种。...结论 GraphQL 的确是API的未来,我们需要了解更多信息。这就是我决定撰写这一系列教程的原因,这些教程将为我们展示如何用好 GraphQL,先从查询和修改开始,然后是订阅和身份验证。

    1.6K30

    Github 为什么开放了一套 GraphQL 版本的 API?

    背景 GitHub 宣布开放了一套使用 GraphQL 开发的公共 API GitHub 的 REST API 已经非常完善,设计得很优秀,很多公司开发自己的 REST API 时都会参考 GitHub...name 后来用户的信息增加了,就在用户接口中返回更多的信息,例如 id,name,age,city,addr,email,headimage,nick 但可能很多client只是想获取其中少部分信息,...用户接口 这种方式非常不灵活 GitHub 还遇到其他一些 REST API 不好处理的问题,例如 想要确保client提供的参数的类型安全;想要从代码生成文档;想要识别每个端点的OAuth请求范围 …… 使用...还有很多其他的特点,例如 批量请求,可以定义两个独立请求的依赖关系,高效的获取数据 创建订阅,client 可以收到新的数据 数据延迟,可以对响应中一部分数据标识为时间不敏感 小结 不只是 Github...,还有很多大公司已经使用 GraphQL,例如 Pinterest, Coursera, Shopify Github 也表达了对 GraphQL API 的重视,接下来会持续完善,使其更加灵活

    1.2K100

    PayPal大规模采用GraphQL的探索和实践

    一些团队选择使用 GraphQL 作为纯编排层,而其它一些团队使用 GraphQL 作为业务逻辑层。 收银台团队是第一个率先使用 GraphQL 的团队。...我们已经看到的 GraphQL 的主要优势有: 开发人员生产力:GraphiQL 和 Playground 等工具非常适合使用 API 的同时浏览文档,而无需借助其它任何工具( Postman)。...范式转换:由于 GraphQL 要求采用设计优先的方法,我们在启用业务用例时考虑 GraphQL,并在考虑客户的情况下构建 API。 更快的交付速度:我们能够更快地交付功能。...我们在 JS @ PayPal 公开会 上多次讨论了我们是如何在各种应用程序中使用 GraphQL 的。 6 我们面临哪些挑战?...图片来源:Possessed Photography on Unsplash 我们仍在创建一种标准方法来应对 GraphQL 技术中的挑战,异常处理、身份认证、文件处理和批处理。

    3.1K20
    领券