当前位置: 首页 > 知识库问答 >
问题:

假装客户端支持可选请求参数

翟鸿振
2023-03-14

假客户端支持可选请求参数吗?

例如,我有一个endpoint,但我没有找到一种方法,可以使用feign client使param1成为可选的。

@GetMapping(path = "endpoint1")
ResponseEntity request(@RequestParam(name = "param1", required = false, defaultValue = "key") String param1){}

共有1个答案

上官培
2023-03-14

通过创建一个自定义的FeignFormatterRegistrar,我设法将可选的请求参数与Feign一起使用。代码如下:

package feignformatters;

import org.springframework.cloud.openfeign.FeignFormatterRegistrar;
import org.springframework.format.FormatterRegistry;
import org.springframework.stereotype.Component;

import java.util.Optional;

@Component
public class OptionalFeignFormatterRegistrar implements FeignFormatterRegistrar {
    
    @Override
    public void registerFormatters(FormatterRegistry registry) {
        registry.addConverter(
            Optional.class, 
            String.class, 
            optional -> {
                if (optional.isPresent())
                    return optional.get().toString();
                else
                    return "";
            });
    }
}

以下客户端开始使用项目中加载的前一个组件进行良好的工作:

@FeignClient("book-service")
public interface BookServiceClient {

    @GetMapping("/books")
    public List<Book> getBooks(
        @RequestParam("page") Optional<Integer> pageNum,
        @RequestParam("size") Optional<Integer> pageSize,
        @RequestParam("reader") Optional<Long> readerId);
}
 类似资料:
  • 我对假装很陌生。今天就发现吧……当我读到Spring Cloud Feign时,我的第一个问题是:“您如何包装您的Fiign客户机?” 我举个例子。假设我们有2个微服务M1和M2。M2使用来自M1的endpoint。 null 也许我完全错了,请指正。 多谢!拜拜

  • 我有一个带有spring后端的Vue.js应用程序,它通过一个虚假的客户端向一个“订单”微服务打电话。我有许多使用@PathVariable运行良好的GET请求,但我有一个GET请求,它可以传递任意数量的不同URL参数,并且定义了一个OrderListItemParameters类并将其添加到GET请求中,以便将这些参数传递给微服务。我可以看到请求正在发送到微服务,但它被拒绝,出现了“org.za

  • 我有一个这样的假客户机,它的endpoint指向来自PROJECT-SERVICE的两个API 我最初以为下游的微服务(本例中为PROJECT-SERVICE)可能出了问题,但事实并非如此。事实上,当调用或时,PROJECT-SERVICE实际上执行了该作业,并返回状态分别为和的,但我的回退是用激活的。 我在徒劳地寻找是什么引起了这个问题。 然而,我在我的主要应用程序配置中有以下内容: 谢谢Sri

  • 客户端的HTTP/HTTPS请求。 进程:主进程​ ClientRequest是由EventEmitter来实现Writable Stream​ new ClientRequest(options) 作用:发起新的HTTP/HTTPS请求 options(Object | String) - options是String时即请求URL。 options 是Object时则按以下属性请求: meth

  • 使用Spring云合同验证生产者和消费者之间的合同。在我的消费者控制器中,我正在使用Feign client调用另一个微服务方法来获取一些数据。但是现在在SpringCloud contract中,为这个微服务进行存根调用是不可能的。 使用Spring Cloud与Netflix OSS。

  • httplib 库主要用来模拟客户端发送 HTTP 请求,类似于 Curl 工具,支持 JQuery 类似的链式操作。使用起来相当的方便;通过如下方式进行安装: go get github.com/astaxie/beego/httplib 如何使用 首先导入包 import ( "github.com/astaxie/beego/httplib" ) 然后初始化请求方法,返回对象 r