Spring GraphQL 1.0.0-M4 版本已發布

發布 | Brian Clozel | 2021 年 12 月 14 日 | ...

Spring GraphQL 團隊剛剛發布了邁向 1.0.0 版本的第四個里程碑。感謝所有貢獻者!

在這個里程碑中,我們進一步改進了註解程式設計模型,並擴展了在先前的里程碑中提供的 Spring Data 支援。

GraphQL 參數的介面投影

如果您熟悉 Spring Data 的 基於介面的投影,那麼這個新功能將非常合理:您可以使用定義良好的介面來處理 GraphQL 參數,而無需任何物件實作。

例如

@Controller
public class BookController {

    @MutationMapping
    public Book addBook(@Argument BookInputProjection bookInput) {
        // ...
    }
}

@ProjectedPayload
interface BookInputProjection {

    String getName();  // this maps to "name" argument

    @Value("#{target.author + ' ' + target.name})
    String getAuthorAndName();
}

您可以在文件中 @ProjectedPayload 介面 章節中瞭解更多資訊。

範例查詢支援

Spring GraphQL 現在支援使用範例查詢,Spring Data,用於資料獲取的擴充。若要使用此擴充,您不需要透過特定於儲存的查詢語言編寫查詢,只需提供具有已填入欄位的網域物件範例即可。儲存庫實作將完成剩下的工作!

QueryByExampleDataFetcher 使建立 DataFetcher 變得容易,該 DataFetcher 將 GraphQL 參數繫結到範例物件,然後使用它來查詢資料。還有一個用於自動探索範例查詢儲存庫的功能,基於 @GraphQlRepository 註解,並對應到頂層 GraphQL 查詢。

如果您的選擇的資料儲存支援它,這會增加另一種方式,可以在 Spring GraphQL 應用程式中利用您的 Spring Data 儲存庫。請參閱文件瞭解更多詳細資訊。

GraphQL 參數的標準 Bean 驗證

除了在綱要層級強制執行的現有約束之外,您現在可以使用標準 Bean 驗證來驗證宣告為控制器方法參數的 GraphQL 參數。如果引數不符合定義的約束,則會擲回驗證例外,並寫入 GraphQL 回應的相關「錯誤」區段。

@Controller
public class BookController {

    @MutationMapping
    public Book addBook(@Argument @Valid BookInput bookInput) {
        // ...
    }
}

public class BookInput {

    @NotNull
    private String title;

    @NotNull
    @Size(max=13)
    private String isbn;
}

這與 Spring MVC 或 Spring WebFlux 中現有的支援類似,您可以在參考文件中瞭解更多關於 @Argument 驗證 的資訊。

Context 存取

新的 @ContextValue 註解提供了從控制器方法方便地存取 GraphQLContext 中的值。

控制器方法可以透過宣告類型為 javax.security.Principal 的方法參數來存取經過驗證的使用者。

@BatchMapping 方法可以存取與 @SchemaMapping 方法以及任何 DataFetcher 相同的 GraphQLContext

更多

更多改進和修正已納入其發布版本中,並且現在可以從 Spring Milestone 儲存庫中的新 Spring GraphQL 1.0.0-M4 版本中使用。

您如何提供協助?

如果您有興趣提供協助,可以開始使用 Spring GraphQL,並在我們的 GitHub 專案上提出問題。如果您有一般問題,請使用 stackoverflow.com 上的 spring-graphql 標籤提問。

專案頁面 | GitHub | 問題 | 文件 | Stack Overflow

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部