領先一步
VMware 提供培訓和認證,以加速您的進度。
瞭解更多Spring GraphQL 團隊剛剛發布了邁向 1.0.0 版本的第四個里程碑。感謝所有貢獻者!
在這個里程碑中,我們進一步改進了註解程式設計模型,並擴展了在先前的里程碑中提供的 Spring Data 支援。
如果您熟悉 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 儲存庫。請參閱文件瞭解更多詳細資訊。
除了在綱要層級強制執行的現有約束之外,您現在可以使用標準 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
驗證 的資訊。
新的 @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