Graphql mock 方案

这篇具有很好参考价值的文章主要介绍了Graphql mock 方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GraphQL API 的强类型本质非常适合模拟。模拟是 GraphQL Code-First 开发过程的重要组成部分,它使前端开发人员能够构建 UI 组件和功能,而无需等待后端实现。

我们期望基于 TS 强类型定义的特点以及中后台常见列表、详情的数据类型共性,实现对 GraphQL API 的数据 mock,减少手写 mock 每个 API 数据。

手写 mock  举例:           

 const list = new UserList()
    list.data = Array(10)
      .fill(1)
      .map((_, i) => {
        const item = new UserInfo()

        item.id = new Int64(i)
        ...

    }

期望通过统一的 mock API

  • 减少对每个API 数据的手动 mock
  • 与 dto 中的类型定义完全一致,从而避免了手写时的误写

基于此,调研到以下三种方案:

方案1:  使用 graphql-tools 进行 mock
// https://graphql.cn/blog/mocking-with-graphql/ 文档demo
// > npm install graphql-tools

import { mockServer } from 'graphql-tools';
import from './mySchema.graphql';
 
const myMockServer = mockServer(schema);
myMockServer.query(`{
  allUsers: {
    id
    name
  }
}`);
 
// returns
// {
//   data: {
//     allUsers:[
//       { id: 'ee5ae76d-9b91-4270-a007-fad2054e2e75', name: 'lorem ipsum' },
//       { id: 'ca5c182b-99a8-4391-b4b4-4a20bd7cb13a', name: 'quis ut' }
//     ]
//   }
// }
  • 另一种实现方式
import { graphql } from 'graphql'
import { addMocksToSchema } from '@graphql-tools/mock'
import { makeExecutableSchema } from '@graphql-tools/schema'
 
// Fill this in with the schema string
const schemaString = `...`
 
// Make a GraphQL schema with no resolvers
const schema = makeExecutableSchema({ typeDefs: schemaString })
 
// Create a new schema with mocks
const schemaWithMocks = addMocksToSchema({ schema })
 
const query = /* GraphQL */ `
  query tasksForUser {
    user(id: 6) {
      id
      name
    }
  }
`
 
graphql({
  schema: schemaWithMocks,
  source: query
}).then(result => console.log('Got result', result))
方案2:  ts定义 => json schema => mock 数据
  • ts定义 => json schema => mock 数据(利用现成库)
方案3:  通过解析 Class 生成 mock 数据
  • 使用 Reflect 获取 class 类中的元数据信息,结合 mockjs 库生成模拟数据

参考链接:

https://github.com/ducafecat/graphQL-example/blob/master/src/mock.js文章来源地址https://www.toymoban.com/news/detail-857716.html

  • Mocking (GraphQL-Tools)
  • 安全验证 - 知乎

到了这里,关于Graphql mock 方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot中使用GraphQL

    GraphQL是Facebook的一个相对较新的概念,被称为Web API的REST的替代品。 在本文中,我们将学习如何使用 Spring Boot 设置 GraphQL 服务器,以便我们可以将其添加到现有应用程序中或在新应用程序中使用它。 传统的 REST API 使用服务器管理资源的概念。我们可以使用各种HTTP请求以一些

    2024年02月15日
    浏览(21)
  • GraphQL(三) - Authentication 和 Authorication

    本文介绍GraphQL中的Authenication和Authorication 参考: https://graphql.org/learn/authorization/ https://www.apollographql.com/docs/apollo-server/security/authentication/ Authenication 和 Authorication 的概念十分容易混淆,两者的定义如下: Authenication 指用户认证,即是否有用户登录,哪个用户登录 Authorication 指

    2024年01月20日
    浏览(41)
  • springboot集成Graphql相关问题汇总

    1、idea在debug运行时出现java.lang.NoClassDefFoundError:kotlin/collections/AbstractMutableMap 解决:禁用idea dubugger中kotlin coroutine agent 见:https://stackoverflow.com/questions/70796177/after-the-spring-boot-source-code-is-compiled-it-starts-to-report-an-error-in-d

    2024年02月12日
    浏览(25)
  • GraphQL渗透测试案例及防御办法

    GraphQL 是一种 API 查询语言,旨在促进客户端和服务器之间的高效通信。它使用户能够准确指定他们在响应中所需的数据,从而有助于避免有时使用 REST API 看到的大型响应对象和多个调用。 GraphQL 服务定义了一个合约,客户端可以通过该合约与服务器进行通信。客户端不需要

    2024年02月10日
    浏览(35)
  • 何时使用 GraphQL、gRPC 和 REST?

    构建 API 是现代工程中开发人员的最重要任务之一。这些 API 允许不同的系统进行通信和数据交换。虽然  REST  多年来一直是实现 API 的事实标准,但今天也有新兴的标准,如  gRPC  和  GraphQL 。 “应用程序编程接口”(API)是各种软件服务之间的通信渠道。传输请求和响应

    2024年04月25日
    浏览(20)
  • uniswap前端项目构建schema.graphql失败

    uniswap构建前端项目也就是interface时出现如下报错! 观察到是在执行node fetch-schema.js时出现的错误,我们看一下里面的代码。 代码很简单,就是通过get-graphql-schema的命令分别在THE_GRAPH_SCHEMA_ENDPOINT,和REACT_APP_AWS_API_ENDPOINT地址中下载the graph的配置文件。看报错信息应该是没有访

    2024年02月16日
    浏览(36)
  • 使用GraphQL在Postman中进行API测试

    GraphQL 是一种用于API的开源数据查询和操作语言,用于API的查询语言和运行时。它使客户端能够精确地指定其数据需求,并获得预测性地结果。GraphQL旨在提高API的效率、灵活性和可靠性。 Postman 是一款用于API开发的强大工具,它支持REST和GraphQL API。Postman还提供了一个用户友好

    2024年02月12日
    浏览(25)
  • Elasticsearch 与 GraphQL 整合:构建实时搜索 API

    随着互联网的普及和数据的快速增长,实时搜索已经成为现代网站和应用程序的必不可少的功能。实时搜索可以帮助用户快速找到相关信息,提高用户体验,增加用户留存时间,并提高销售转化率。 Elasticsearch 是一个开源的搜索和分析引擎,基于 Lucene 库,它提供了一个实时

    2024年04月22日
    浏览(22)
  • Spring Boot集成Graphql快速入门Demo

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 优势 GraphQL 速度快,并且比较稳定,GraphQL 的操作是在数据层面的,

    2024年04月13日
    浏览(35)
  • Introduction to GraphQL-style APIs

    GraphQL is an open-source query language and runtime environment developed by Facebook for constructing APIs. Unlike traditional RESTful APIs, GraphQL allows clients to send precise queries to retrieve the necessary data without returning extraneous information. The core idea of GraphQL is to allow clients to define the data structure they require, rather th

    2024年02月20日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包