簡體   English   中英

Graphql-Mutation:模式異常

[英]Graphql-Mutation : Schema Exception

我正在嘗試使用 HotChocolate 實現 GraphQL -mutation。 但是架構(https://localhost:1234/graphql?sdl)存在一些問題,我得到了未處理的異常:

架構生成器無法識別架構的查詢類型。 指定哪種類型是查詢類型,或者將模式構建器設置為非嚴格驗證模式。

SchemaException:有關更多詳細信息,請查看Errors屬性。 1. 架構構建器無法識別架構的查詢類型。 指定哪種類型是查詢類型,或者將模式構建器設置為非嚴格驗證模式。

我的突變代碼:

using HotChocolate

public class Book
{
    public int Id { get; set; }

    [GraphQLNonNullType]
    public string Title { get; set; }

    public int Pages { get; set; }

    public int Chapters { get; set; }
}

public class Mutation
{
    public async Task<Book> Book(string title, int pages, string author, int chapters)
    {
        var book = new Book
        {
            Title = title,
            Chapters = chapters,
            Pages = pages,
        };

        return book;
    }
}

我在 API startup.cs 文件中添加了以下內容

public void ConfigureServices(IServiceCollection services)
{
    services.AddGraphQLServer().AddMutationType<Mutation>();
}

你可以試試這個:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGraphQLServer()
            .ConfigureSchema(sb => sb.ModifyOptions(opts => opts.StrictValidation = false))
            .AddMutationType<Mutation>();
}

當您注冊突變類型時,這似乎會發生。 如果您還注冊了查詢類型,該錯誤就會消失。

因此,您可以將以下內容添加到您的代碼中

public class Query
{
    public string HelloWorld()
    {
        return "Hello, from GraphQL!";
    }
}

並將其注冊到您的服務中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGraphQLServer()
        .AddMutationType<Mutation>()
        .AddQueryType<Query>();
}

顯然這不是一個理想的解決方案,因為您可能打算讓您的 API 僅具有突變(盡管這可能不太可能)。 如果像我一樣,您的 API 將同時支持查詢和突變,但您剛剛開始構建突變,您現在可以將此查詢添加為占位符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM