我遇到了不尋常且有趣的技術以及使用Spring Cloud Function拆分業務和技術實現的方式,它使java.util.function類的實現充當端點<dependency>? ? <groupId>org.springframework.cloud</groupId>? ? <artifactId>spring-cloud-starter-function-web</artifactId></dependency>簡而言之,有一個簡單的靜態List<Book>表示存儲庫:private final static List<Book> books = Arrays.asList(? ? new Book(1, "One"),? ? new Book(2, "Two"),? ? new Book(3, "Three"));? ??以下@Bean根據方法名稱及其返回類型啟用指定的端點:// GET localhost:8080/books -> returns all the books:@Beanpublic Supplier<List<Book>> books() {? ? return () -> books;}// GET localhost:8080/book/2 -> returns a particular book@Beanpublic Function<Integer, List<Book>> book() {? ? return id -> books.stream().filter(b -> b.getId() == id).collect(Collectors.toList());}// POST localhost:8080/newBook -> posts a new book and returns all of them// Consumer<Book> would supply the POST with no output@Beanpublic Function<Book, List<Book>> newBook() {? ? return book -> {? ? ? ? books.add(book);? ? ? ? return books;? ? };}問題:是否可以使用組合中的一個或多個類來實現完整的 REST 兼容解決方案java.util.function?我只能寫出以上那些。我對以下模式特別感興趣:GET? ? ? ?/booksGET? ? ? ?/books/1POST? ? ? /booksPUT/PATCH /books/1DELETE? ? /books/1GET? ? ? ?/books/1/chapters/2/paragraphs/3如何避免端點的方法名稱沖突,因為所有方法似乎都必須遵循空參數簽名的規則,否則不可自動裝配。我從https://www.baeldung.com/spring-cloud-function開始,它看起來更像是一個RPC 而不是 REST。有沒有辦法識別 URL 參數?GET? ? ? ?/books?sort=name
1 回答

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
這種方式在他們的官方文檔或博客文章中都沒有明確說明。我不能肯定地說它是為這種用例設計的。
無論如何,在文檔的一部分中。提到以下內容:
函數也可以是 Flux 或 Flux,Spring Cloud Function 負責將數據與所需類型進行相互轉換,只要它以純文本或(在 POJO 的情況下)JSON 形式出現。還支持從傳入事件復制消息標頭的消息,具體取決于適配器。Web Adaptor 還支持從表單編碼數據到 Map 的轉換,如果您將此功能與 Spring Cloud Stream 一起使用,則消息有效負載的所有轉換和強制轉換功能也將適用。
消息可以接受輸入和輸出,并且它還(如文檔中所述)能夠對數據進行編碼以映射到可以存儲查詢參數或標頭參數的位置。
添加回答
舉報
0/150
提交
取消