Angular 从角度前端访问Spring Boot控制器时出现问题
我有以下设置: 我的控制器:Angular 从角度前端访问Spring Boot控制器时出现问题,angular,maven,spring-boot,Angular,Maven,Spring Boot,我有以下设置: 我的控制器: @RequestMapping("/project") @RestController public class ProjectController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired ProjectService projectService; @CrossOrigin @PostMapp
@RequestMapping("/project")
@RestController
public class ProjectController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
ProjectService projectService;
@CrossOrigin
@PostMapping(value = "/createProject")
public ResponseEntity createProject(@RequestBody ProjectDto projectJsonString) {
return ResponseEntity.ok(HttpStatus.OK);
}
}
this.http.post('http://localhost:8080/project/createProject', JSON.stringify(project)).
subscribe( (res) => {
this.logger.info('Response: ' + res);
});
public class ProjectDto {
private String projectName;
private String projectNumber;
private String projectArea;
private String managerName;
private String managerShorthand;
}
在my.service.ts中
:
@RequestMapping("/project")
@RestController
public class ProjectController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
ProjectService projectService;
@CrossOrigin
@PostMapping(value = "/createProject")
public ResponseEntity createProject(@RequestBody ProjectDto projectJsonString) {
return ResponseEntity.ok(HttpStatus.OK);
}
}
this.http.post('http://localhost:8080/project/createProject', JSON.stringify(project)).
subscribe( (res) => {
this.logger.info('Response: ' + res);
});
public class ProjectDto {
private String projectName;
private String projectNumber;
private String projectArea;
private String managerName;
private String managerShorthand;
}
我的Dto:
@RequestMapping("/project")
@RestController
public class ProjectController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
ProjectService projectService;
@CrossOrigin
@PostMapping(value = "/createProject")
public ResponseEntity createProject(@RequestBody ProjectDto projectJsonString) {
return ResponseEntity.ok(HttpStatus.OK);
}
}
this.http.post('http://localhost:8080/project/createProject', JSON.stringify(project)).
subscribe( (res) => {
this.logger.info('Response: ' + res);
});
public class ProjectDto {
private String projectName;
private String projectNumber;
private String projectArea;
private String managerName;
private String managerShorthand;
}
但是,当我将应用程序构建到一个jar文件并执行它时,在执行api调用时会出现以下错误:
HttpErrorResponse {headers: HttpHeaders, status: 415, statusText: "OK", url: "http://localhost:8080/project/createProject", ok: false, …}
error:
error: "Unsupported Media Type"
message: "Content type 'text/plain;charset=UTF-8' not supported"
path: "/project/createProject"
status: 415
timestamp: "2018-12-10T21:41:26.036+0000"
当我卷曲它时也会发生同样的事情。有人能告诉我我做错了什么吗?当请求没有包含适当的内容类型标头时,会出现“不支持的媒体类型”错误
请确保您的请求包含值为“application/json”的“Content Type”标头(假设您发送的数据是json格式的)。当请求不包含适当的内容类型标头时,会出现“Unsupported Media Type”错误
请确保您的请求包含值为“application/json”的“Content Type”标题(假设您发送的数据是json格式的)。如HL'REB所述,您应该在post请求中添加正确的内容类型,当您使用spring boot和RestController时,我假设默认的json支持已激活,因此这可能是预期的媒体类型(
application/json
)
因此,您可以尝试以下更改
this.http.post('http://localhost:8080/project/createProject,JSON.stringify(项目),
{
标题:{'Content-Type':'application/json'}
}).subscribe((res)=>{this.logger.info('Response:'+res);});
正如HL'REB所提到的,您应该在post请求中添加正确的内容类型,因为您使用的是spring boot和RestController。我假设默认的json支持已激活,因此这可能是预期的媒体类型(应用程序/json
)
因此,您可以尝试以下更改
this.http.post('http://localhost:8080/project/createProject,JSON.stringify(项目),
{
标题:{'Content-Type':'application/json'}
}).subscribe((res)=>{this.logger.info('Response:'+res);});
url中的“createProject”是什么?我看不到这方面的映射。只需使用@Lemmy抱歉,我看到我的类仍然包含该url的常量,我将更新它。这是我方法的映射器-我看到了第一个问题,我使用了name
而不是value
,谢谢!我理解这一点,但我是说您没有createProject的映射。使用值而不是名称。请参阅remove stringify,因为您必须发送JSONURL中的“createProject”是什么?我看不到这方面的映射。只需使用@Lemmy抱歉,我看到我的类仍然包含该url的常量,我将更新它。这是我方法的映射器-我看到了第一个问题,我使用了name
而不是value
,谢谢!我理解这一点,但我是说您没有createProject的映射。使用值而不是名称。请参阅remove stringify,因为您必须发送json