当使用Angular 8与Spring Boot一起使用时,通过POST方式发送REST服务时,可能会遇到HttpServletRequest中返回null的问题。这个问题通常是由于请求的数据格式不正确或者请求头缺失造成的。下面是一个可能的解决方案,其中包含代码示例。
import { HttpClient, HttpHeaders } from '@angular/common/http';
// 创建请求头
const headers = new HttpHeaders().set('Content-Type', 'application/json');
// 发送POST请求
this.http.post(url, data, { headers }).subscribe(
response => {
console.log('请求成功', response);
},
error => {
console.error('请求失败', error);
}
);
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@PostMapping("/api/myendpoint")
public ResponseEntity myEndpoint(@RequestBody MyRequest request) {
// 处理请求
// ...
// 构建响应
MyResponse response = new MyResponse();
// ...
return ResponseEntity.ok(response);
}
}
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
这些配置将确保请求的编码正确解析,并将请求参数正确地传递给HttpServletRequest对象。
希望以上解决方案可以帮助你解决问题。如果问题仍然存在,请检查请求的数据格式和请求头是否正确设置,以及确保Spring Boot的配置正确。