我遇到了不寻常且有趣的技术以及使用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
提交
取消