Java 使用Apache HTTP客户端发送HTTP PUT请求时出现问题&;春假
我已经开发了一个简单的restapi,它使用springboot2.3.1.RELEASE和oraclejdk14服务于一个简单的httpput请求。下面是服务器端REST端点:Java 使用Apache HTTP客户端发送HTTP PUT请求时出现问题&;春假,java,spring,rest,apache-httpcomponents,http-put,Java,Spring,Rest,Apache Httpcomponents,Http Put,我已经开发了一个简单的restapi,它使用springboot2.3.1.RELEASE和oraclejdk14服务于一个简单的httpput请求。下面是服务器端REST端点: @Controller @RequestMapping("/api/documents") public class DocumentController { @PutMapping(value = "/setCurrentTenant", consumes = &quo
@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);
}
}
我尝试运行代码,一切正常,但当客户端请求发送到服务器时,Spring会记录如下异常:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException:
Required Long parameter 'tenantId' is not present]
我遗漏了什么吗?您应该像请求参数一样发送
tenantId
http://localhost:8080/api/document/setCurrentTenant?tenantId=10
我担心的是,为什么在不发送任何文件/二进制数据的情况下使用多部分/表单数据
类租户请求{
长期租约;
长文档ID;
//塞特,盖特
}
@PutMapping(value=“/setCurrentTenant”,consumes=“多部分/表单数据”)
公共响应设置当前租户(租户请求){
//待办事项
}
或
@PutMapping(value=“/setCurrentTenant”,consumes=“multipart/form data”)
public ResponseEntity setCurrentTenant(@ModelAttribute TenantRequest请求){
//待办事项
}
由于安全原因,它应该在请求内部,如果您需要RequestBody或ModelAttribute注释并创建一个请求对象来映射请求参数,这不是我的问题,我发现还有很多其他方法可以做到这一点。但为什么在一切正常的情况下它不起作用呢??
Resolved [org.springframework.web.bind.MissingServletRequestParameterException:
Required Long parameter 'tenantId' is not present]
class TenantRequest {
Long tenantId;
Long documentId;
//seter, getter
}
@PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
public ResponseEntity<?> setCurrentTenant(TenantRequest request) {
// TODO
}
@PutMapping(value = "/setCurrentTenant", consumes = "multipart/form-data")
public ResponseEntity<?> setCurrentTenant(@ModelAttribute TenantRequest request) {
// TODO
}