【发布时间】:2020-09-23 09:32:36
【问题描述】:
我开发了一个简单的 REST API,它使用 Spring Boot 2.3.1.RELEASE 和 Oracle JDK 14 提供简单的 HTTP PUT 请求。下面是服务器端 REST 端点:
@Controller
@RequestMapping("/api/documents")
public class DocumentController {
@PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
public ResponseEntity<?> setCurrentTenant(
@RequestParam(value = "documentId", required = false) Long documentId,
@RequestParam("tenantId") Long tenantId) {
return documentService.setCurrentTenant(documentId, tenantId);
}
}
以及客户端代码:
HttpPut putRequest = new HttpPut("http://localhost:8080/api/document/setCurrentTenant");
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
builder.addTextBody("documentId", "1");
builder.addTextBody("tenantId", "10");
HttpEntity setCurrentTenantEntity = entityBuilder.build();
putRequest.setEntity(setCurrentTenantEntity);
httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(putRequest);
我尝试运行代码,一切正常,但是当客户端请求发送到服务器时,Spring 会记录如下异常:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException:
Required Long parameter 'tenantId' is not present]
我错过了什么吗?
【问题讨论】:
标签: java spring rest apache-httpcomponents http-put