Angular HttpClient Post Request для Spring REST API Неизвестная ошибка - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть локально работающий Spring Backend со следующими конечными точками:

@GetMapping(path = "/api/public/projects")
public Iterable<Project> findAllProjectsPublic(){
    return projectRepository.findAll();
}

@GetMapping(path = "/api/private/projects/{id}")
public ResponseEntity<Project> findProjectById(@PathVariable Long id){
    return projectRepository.findById(id)
            .map(project -> ResponseEntity.ok().body(project))
            .orElse(ResponseEntity.notFound().build());
}

@PostMapping(path = "/api/public/projects")
public Project createProject(@RequestBody Project project){
    System.out.println(project);
    return projectRepository.save(project);
}

Все конечные точки работают должным образом, когда я тестирую их в Postman.

Я реализовал службу сследующие методы в Angular:

public getAllProjects(cb) {
    this.http.get<Project[]>(this.API_URL + "/public/projects")
    .subscribe(projects => {
        cb(null, projects);
    }, error => {
        cb(error, null);
    })
}

public getProjectById(id: number, cb){
    this.http.get<Project>(`${this.API_URL}/private/projects/${id}`)
    .subscribe(project => {
        cb(null, project);
    }, error => {
        cb(error, null);
    })
}

public createProject(cb){
    this.http.post(`${this.API_URL}/public/projects`, { name: 'Test'})
    .subscribe(res => {
        cb(null, res);
    }, error => {
        cb(error, null);
    })
}

GET-запросы также работают и в Angular, однако POST-запрос не работает и записывает статус 403 с сообщением об ошибке:

Http failure response for (unknown url): 0 Unknown Error

КогдаЯ изменяю почтовую конечную точку весной, чтобы получить строку вместо моего тела @Request, например:

    @PostMapping(path = "/api/public/projects")
public Project createProject(String projectname){
    return projectRepository.save(new Project("Test"));
}

это работает!Так что должно быть что-то с телом запроса.Но тем не менее, я получаю 403 Запрещенного статуса, что для меня абсолютно бессмысленно.

Тело, которое я отправил в Почтальон:

{
    "name": "Test"
}

, и это работает ...

...