GraphQL:来来来,Union

2023-11-06 02:08
文章标签 graphql union 来来来

本文主要是介绍GraphQL:来来来,Union,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Union就是把不相干的一些数据实体,合并起来,一起供外部查询。不用像webapi,完成查询不同的数据,需要多次请求。一次请求,获取多样数据,减少请求次数,这也是GraphQL的优势之一。怎么弄,来来来,代码看过来:

using HotChocolate;
using HotChocolate.Execution;
using HotChocolate.Types;
using System;namespace GraphQLBase006
{class Program{static void Main(string[] args){UnionDemo.Run();}}public class UnionDemo{public static void Run(){var schema = SchemaBuilder.New().AddQueryType<Query>().AddType<Car>().AddType<Cabbage>().AddType<Earth>().AddProjections().Create();var executor = schema.MakeExecutable();Console.WriteLine(executor.Execute(@"
{formats{__typename,... on Car{brand,price},... on Cabbage{name,nutrition}... on Earth{diameter        }} 
}").ToJson());}}public class Query{public IUnion[] GetFormats(){return new IUnion[]{new Car{Brand="Benz",Price=1000000},new Cabbage{Name="灰子白",Nutrition="纤维"},                 new Earth{Diameter=12742}};}}[UnionType("Unio")]public interface IUnion{}public class Car : IUnion{public string Brand { get; set; }public decimal Price { get; set; }}public class Cabbage : IUnion{public string Name { get; set; }public string Nutrition { get; set; }}public class Earth : IUnion{public double Diameter { get; set; }   }
}

案例中就是把不相干的Car,Cabbage,Earth,通过继承一个空接口合并起来,供外部访问,通过自定义查询接口语句,达到灵活取想要的数据,比如一些数据字典的查询就很有用,不相干的一些配置,同时获取到,以备后用。

结果:

{"data": {"formats": [{"__typename": "Car","brand": "Benz","price": 1000000},{"__typename": "Cabbage","name": "\u7070\u5B50\u767D","nutrition": "\u7EA4\u7EF4"},{"__typename": "Earth","diameter": 12742}]}
}

这篇关于GraphQL:来来来,Union的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/353872

相关文章

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。 结构声明 在声明结构时,必须列出它包含的所有成员。 struct tag {member-list} variable-list ; 定义一个结构体变量x(包含

ASP.NET Core 入门教学十七 GraphQL入门指南

GraphQL 是一种用于 API 的查询语言,允许客户端请求所需的数据,并能够合并多个资源到一个请求中。在 ASP.NET Core 中使用 GraphQL 可以提供更灵活、高效和实用的数据查询方式。以下是 ASP.NET Core 中 GraphQL 的入门指南: 1. 安装必要的 NuGet 包 首先,你需要安装以下 NuGet 包: GraphQLGraphQL.Server.Tra

graphQL 管理API的流行趋势

管理API的流行趋势为 graphQL   官网参考地址   https://graphql.org.cn/

实验C语言“union”的最基础语法

目标 最近在看Rust的“菜鸟教程”,看到 Rust 枚举类 时我发现它所定义的“枚举类”虽然也能像C语言枚举类那样使用,但是多了些功能:对于某个枚举的成员,还可以附带独特的数据,这让我想起了C语言中的union。 而我事实上对union没有使用经验,我自己写程序的时候不用它,看其他的项目的程序时印象里也没见过它。所以我对union的设计意图理解不深(可能只是为了节省内存?)。本篇的目标是对其

Union Find 题型总结

Union Find模板要会背诵; private class UnionFind {private int[] father;private int count;public UnionFind(int n) {this.father = new int[n + 1];for(int i = 0; i <= n; i++) {father[i] = i;}this.count = n;}pub

DFS、BFS、Union-Find:找出图中省份数量的最佳方法

题目理解 问题描述: 有 n 个城市,其中一些城市之间直接相连,另一些则不相连。如果城市 a 和城市 b 直接相连,且城市 b 和城市 c 直接相连,那么城市 a 和城市 c 间接相连。省份被定义为一组直接或间接相连的城市,组内不包含与之不相连的其他城市。给定一个 n x n 的矩阵 isConnected,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直

mysl 常用函数 union all if ifnull exists case when

mysl 常用函数 union all if ifnull exists case when 1.union all UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 默认地,UNION 操作符选取不同的值。如果允许重复的

SOMEIP_ETS_071: Union_Length_too_long

测试目的: 验证当设备(DUT)接收到一个联合(union)长度超出实际联合长度的SOME/IP消息时,是否能够返回错误消息。 描述 本测试用例旨在检查DUT在处理一个echoUNION方法的SOME/IP消息时,如果消息中声明的联合长度超过了实际联合的长度,DUT是否能够返回格式错误(MALFORMED_MESSAGE)的错误消息。 测试拓扑: 具体步骤: TESTER:使用ec

MYsql的UNION使用 构造结果集

如果想选择其他几个表中的行或从一个单一的表作为一个单独的结果集行的几个集会,那么可以使用的UNION。 UNION在MySQL4.0以上版本才能可以使用。本节说明如何使用它。 假设有两个表,潜在和实际的客户列表,供应商购买耗材合并所有三个表中的姓名和地址,来创建一个单一的邮件列表。UNION提供了一种方法做到这一点。假设三个表有以下内容: ? 1 2 3 4 5

【来来来,我看看是谁不点我】Nuxt3入坑记--JS版

为什么选择Nuxt3呢? 老板说要上SSR 紧跟潮流 Nuxt3对于没有SSR经验的同学来说,是一个不错的选择,简单易用上手轻松。 Nuxt3官方地址 Nuxt3生态圈 Nuxt3官方案例 Nuxt3具有什么优势呢? 开发更快打包更小支持 vite支持 vue3支持自动引入支持文件路由支持布局系统支持多种渲染模式支持 typescript支持 composition-api Nu