Graphql Php:类类型定义与模式语言

Posted

技术标签:

【中文标题】Graphql Php:类类型定义与模式语言【英文标题】:Graphql Php: Class type definitions vs. schema language 【发布时间】:2019-02-07 19:20:08 【问题描述】:

Graphql 新手,使用 webonyx/graphql-php

使用类样式定义与 graphql 提供的语法定义我的架构有什么好处?

我有一个使用类样式模式定义的基本工作示例,如下所示:

use MyApp\Type\MediaType;
use MyApp\TypeRegistry;

use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;

class MusicType extends ObjectType 

    public function __construct() 
        $config = [
            'fields' => [
                'id' => Type::id(),
                'name' => Type::String(),
                'url' => Type::String(),
                'dateStart' => Type::String(),
                'dateEnd' => Type::String()
            ],
            'interfaces' => [
                TypeRegistry::media(),
                TypeRegistry::dateRestricted(),
            ]
        ];
        parent::__construct($config);
    

但是,我发现以这种方式定义架构很笨拙,唯一真正的好处是我可以在与架构相同的位置定义解析器。

使用 schema.graphqls 语法看起来更简洁,并且更容易移植到其他服务器端语言...

type Music implements Media 
    id: ID!
    name: String!
    url: String!
    dateStart: String
    dateEnd: String

使用类样式定义与 graphql 提供的语法定义我的架构有什么好处?

【问题讨论】:

【参考方案1】:

在我看来,Type 语言风格更加简洁易读。我仍然需要了解如何为这个库编写联合类型和接口的解析器,无论如何,它们应该是等价的。

【讨论】:

以上是关于Graphql Php:类类型定义与模式语言的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL 模式中定义嵌套枚举类型

graphql-java:如何在以编程方式生成 graphql 模式时添加自定义标量类型?

使用 Hasura graphql 模式时如何自定义 graphql-code-generator 生成的字段的类型

GraphQL Schema 定义语言中的别名类型

将 TypeORM 实体模型类与 NestJS-GraphQL 模式类型结合使用好吗?

将 graphQL 片段添加到模式中,并且可用于所有查询