为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Spring Cloud Function 将函数映射到符合 REST 的端点

如何使用 Spring Cloud Function 将函数映射到符合 REST 的端点

慕勒3428872 2023-06-08 14:43:04
我遇到了不寻常且有趣的技术以及使用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 一起使用,则消息有效负载的所有转换和强制转换功能也将适用。

消息可以接受输入和输出,并且它还(如文档中所述)能够对数据进行编码以映射到可以存储查询参数或标头参数的位置。


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信