首页
学习
活动
专区
工具
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文档等,捡洞速度极快。

    67030

    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方面具有广阔的应用前景。

    14310

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

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

    29520

    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

    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.1K20

    API协议设计的10种技术

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

    34610

    为什么GraphQL是API的未来

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

    1.6K30

    一种不错的 BFF Microservice GraphQLREST API 层的开发方式

    /api-docs/ GRAPHQL_SUBSCRIPTIONS 启用/禁用 GraphQL subscriptions (true 或 false) true GRAPHQL_PLAYGROUND 启用.../禁用 GraphQL Playground (true 或 false) true GRAPHQL_TRACING 启用/禁用 GraphQL tracing (true 或 false) true...GRAPHQL_MOCK 启用/禁用 GraphQL Mock,对于未实现的接口(true 或 false) true API_MOCK 启用/禁用 REST API Mock,对于未实现的路由(true...如果启用了 JWT 安全性(环境变量 JWT_AUTH 为 true),我们需要使用登录突变 API 来获取示例 JWT 令牌(当前设置为1小时到期) Step 1 - 使用登录 mutation(突变...当前添加了一个使用 @date 指令的示例( graphql-tools 文档中所述) Query ({ today(format: "mmm-dd-yy") }) - 这里的格式基于@date scheme

    2.3K10

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

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

    3K20
    领券