我试图在Spring中为我的REST服务控制器创建一个假客户端。
@PostMapping("/search")
public Page<MeasureDto> searchMeasures(@RequestBody MeasureDto example, Pageable pageable) {
...
}
客户端如下所示:
@PostMapping("/search")
public Page<MeasureDto> searchMeasures(@RequestHeader("apiKey") String apiKey, @RequestBody MeasureDto example, Pageable pageable);
运行测试时引发以下异常:
原因:java.lang.IllegalStateException:方法的正文参数太多:public abstract org.springframework.data.domain.page com.foo.bar.jobservice.client.MeasureServiceClient.searchMeasures(java.lang.string,com.example.foo.jobservice.client.dto.measuredto,org.springframework.data.domain.pageable)
GitHub上有一个已结束的问题:https://github.com/spring-cloud/spring-cloud-netflix/issues/556
本应解决问题的提交问题:
https://github.com/spring-cloud/spring-cloud-openfeign/issues/26
import feign.codec.Encoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.support.PageJacksonModule;
import org.springframework.cloud.openfeign.support.PageableSpringEncoder;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@EnableFeignClients
@Configuration
public class FeignConfig {
@Bean
public PageJacksonModule pageJacksonModule() {
return new PageJacksonModule();
}
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Encoder feignEncoder() {
return new PageableSpringEncoder(new SpringEncoder(messageConverters));
}
}
还是不行。
我正在使用的内容:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.3.RELEASE</version>
我做错了什么?
编辑:基本上我想知道如何传递分页到假客户端。也许把它编码在url参数中?
相关问题:如何将Spring Pageable传递给FeignClient
例外情况是“太多的Body参数”,这意味着您只能在RequestBody中发送一个对象,在这个特定的情况下,我相信它是MeasureDto“example”。您必须以不同的方式传递的页面,通常我在类中有一个“page”整数属性(在您的例子中是MeasureDTO),或者我以@RequestParam的形式发送页码,如下所示:
@PostMapping("/search")
public Page<MeasureDto> searchMeasures(@RequestBody MeasureDto example, @RequestParam(required = true) Integer page) {
// PageRequest.Of(numberPage, quantityRegisters) will send a Pageable, in this case bellow, number of page + number of records
measureService.getMeasurePageable(example, PageRequest.of(page, 10));
}
尽管如此,如果您正在搜索而不是保存它,请考虑将GetMapping与queryParams一起使用。
冒充客户 客户端的控制器 } 编辑3:我添加了功能区 我的服务应用程序和我的api是使用虚假客户机。不幸的是,我仍然有同样的问题。我已经刷新和重建了一切。 编辑4:我已经为这个问题创建了一个GitHub项目。 输入输入模块使用输入格式和输入解析模块作为假客户机来验证输入字符串的长度和解析/打印项。我一直使用字母表作为输入,所以输入参数的最小长度设置为26。input-format在端口8080上运
问题内容: 我已经按照npm软件包文档中的建议编写了axios POST请求,例如: 它可以工作,但是现在我修改了后端API以接受标头。 内容类型:“ application / json” 授权:“ JWT fefege …” 现在,此请求在Postman上可以正常工作,但是在编写axios调用时,我遵循 此链接 ,无法完全正常工作。 我经常出错。 这是我的修改请求: 任何帮助是极大的赞赏。 问
我正在使用RestTemplate方法将请求发布到endpoint。我在不同的文件中有和,我想把它们传递给POST请求,除此之外,我还想把传递给endpoint。 我能够成功地传递头和请求,但不能传递包含凭据的Http实体 有没有办法让我三样东西都及格 > HttpHeader 要求 这是我的密码 以下代码位于NewHttpHeader中。包含和
这是原样代码。 我用假客户机修改了代码。像这样。 从功能上来说,没有问题。 有人帮忙吗,拜托。谢谢!
我想在点击页面底部时从数据库中检索数据。 现在,我所了解的是: URL。py 视图。py公司 index.html 基本上,它在开始时加载5项,而我试图实现的是,当我到达页面底部时,它会再加载1项。因此jQuery在控制台上工作。日志(“测试”)工作,在我的终端上显示 “获取/加载/HTTP/1.1”200 484 这也很好。 我想我搞砸了ajax不知何故。虽然我不确定。 你可能知道我是个笨蛋,但
我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。 我试图向其中一个endpoint发出请求,并使用JSON作为有效负载。 然后,网关将检测,并通过默认模板传递所有请求参数(包括正文)。有趣的是这一部分 它应该给我一张