如何在GraphQL中隐藏自我介绍查询的部分?

如果您是一位GraphQL开发人员,那么您肯定已经了解了自我介绍查询。这是一个非常有用的工具,可以帮助您快速了解您的GraphQL API。不过,在某些情况下,您可能不希望暴露自我介绍查询的每个细节。幸运的是,有一个方法可以保持自我介绍查询的部分隐藏。

首先,让我们了解一下自我介绍查询的作用。自我介绍查询探索GraphQL模式的每个方面,包括可用的查询,字段和类型。开发人员可以使用它来获取他们的API的完整概述。然而,许多情况下,您可能想要保护某些信息不被公开显示。

可能有几个原因需要隐藏自我介绍查询的部分。例如,您可能想要保护您的API免受攻击和黑客入侵。此外,隐藏敏感信息可以提高API性能,减少响应时间。因此,让我们探讨如何在GraphQL中隐藏自我介绍查询的部分。

要隐藏自我介绍查询的部分,我们需要利用GraphQL的一个特殊字段。该字段名为“__ schema”。它可以让我们访问整个GraphQL模式,如下所示:

“`

query {

__schema {

queryType {

name

}

mutationType {

name

}

subscriptionType {

name

}

types {

…FullType

}

directives {

name

description

locations

args {

…InputValue

}

}

}

}

fragment FullType on __Type {

kind

name

description

fields(includeDeprecated: true) {

name

description

args {

…InputValue

}

type {

…TypeRef

}

isDeprecated

deprecationReason

}

inputFields {

…InputValue

}

interfaces {

…TypeRef

}

enumValues(includeDeprecated: true) {

name

description

isDeprecated

deprecationReason

}

possibleTypes {

…TypeRef

}

}

fragment InputValue on __InputValue {

name

description

type {

…TypeRef

}

defaultValue

}

fragment TypeRef on __Type {

kind

name

ofType {

kind

name

ofType {

kind

name

ofType {

kind

name

ofType {

kind

name

ofType {

kind

name

ofType {

kind

name

ofType {

kind

name

}

}

}

}

}

}

}

}

“`

如上代码段所示,此查询将返回整个GraphQL架构的细节。

为了隐藏自我介绍查询的部分,您只需要从查询中删除“__ schema”字段即可,如下所示:

“`

query {

myQuery {

# Your query here…

}

}

“`

在上面的查询中,只有“myQuery”是您需要的字段。您的API用户将不能通过查询来访问任何其他字段,这样就可以实现隐藏敏感信息的目的。

在实际应用中,您可以根据您的需求,将这种技术与其他技术一起使用,如身份验证和授权。这将有助于确保您的API在安全方面表现得更好。

总之,隐藏自我介绍查询的部分是一种简单但有用的技巧,可以保护您的GraphQL API免受攻击和黑客入侵,提高性能并保护敏感信息。如果您是GraphQL开发人员,请务必掌握此技术。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/