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

TestRestTemplate交换方法GET中的错误请求(400)

张可人
2023-03-14

我正在使用TestRestTemplate运行Spring Boot测试

@GetMapping(path = "/api/member/{member-id}")
public ResponseEntity<Member> getMemberById(@PathVariable(name = "member- 
         id", required = true) Long memberId) {
    Member member = memberService.findById(memberId);
    if (member != null) {
        return ResponseEntity.ok(member);
    }
    return ResponseEntity.notFound().build();
}

@Test
@Transactional
public void getMemberSuccessful() throws Exception {
    HttpEntity<Object> member = getHttpEntity("{\"member-id\": \"2\"}");

    ResponseEntity<Member> response = 
    template.exchange("/api/member/{member-id}", HttpMethod.GET, member,
            Member.class, "member-id");

    Assert.assertEquals(200, response.getStatusCode().value());

}

private HttpEntity<Object> getHttpEntity(Object body) {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    return new HttpEntity<Object>(body, headers);
}

共有1个答案

慕宪
2023-03-14

您应该在exchange()方法的末尾添加urivariable:

template.exchange("/api/member/{member-id}", HttpMethod.GET, null,
            Member.class, 2);

TestRestTemplate不会从HttpEntity对象读取它

 类似资料:
  • 当我通过postman登录到API时,会生成一个JWT。通过这个jwt,我为特定用户创建数据。但是当我与这个用户和他的JWT连接时,当我用连接的用户的JWT从POSTMAN发出GET请求时,我得到一个400错误,表示请求不好。我不明白为什么。我的Tomcat服务器端口不是8080。。。只需使用GET方法吼叫我的控制器:

  • 我正在使用Basecamp API,它是一个REST(JSON)API,使用HTTPS上的基本HTTP身份验证。 这应该是一个GET请求,但当我使用GET运行我的代码时,我收到了: 无法发送包含此谓词类型的内容正文 当我将其作为POST运行时,我会收到: {“状态”:“400”,“错误”:“错误的请求”} 有谁知道为什么会发生这种情况? 在此代码中,我显然交换了用户名,密码,项目名称和URL,但在

  • 我有一个网络应用程序的问题。我是一名学生,还在学习。这是一个简单的论坛,登录,注册,添加新主题和帖子。也可以删除没有问题的主题Get映射方法。不幸的是,我得到了一个命令,以更改Get映射删除和更改后得到一个错误的内容的应用程序: 这就是主题。更改删除之前的html视图: 更改后: 我还编辑了控制器。这是使用getMapping的早期工作版本: } 而新版本则不起作用:

  • 我试图对我写的rest api执行一个put请求,但它总是返回400-bug请求。 java.io.IO异常:服务器返回HTTP响应代码:400为URL:http://localhost:8000/api/v0/contacts/2sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 我可以用firefox rest客户端

  • XMLHttpRequest无法加载http://esbuatt1wm.ito.unisys.com:7001/invoke/wm.server/ping。对飞行前请求的响应没有通过访问控制检查:在所请求的资源上没有“访问-控制-允许-起源”标头。因此,不允许访问源'http://localhost:1337'。

  • 每次尝试从数据库中获取用户信息时,我都会收到一个错误。关于我下面的代码,每次我按下Ajax测试按钮尝试请求时,它都无法运行并向我发出警报,但控制台中也会向我发出403禁止的错误。我不确定这是否与Spring security有关? 用户JSP页面: 用户控制器类: