Передайте примитивный тип данных в теле запроса в Angular HTTP PUT - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть метод обслуживания, и мне нужно передать UUID через свойство String службе, используя HTTP-запрос PUT через полезную нагрузку запроса (т. Е. Тело).

Подпись метода контроллера Java Spring Boot API -

@PutMapping("group/{groupId}/updateFile")
    public String deleteAgencyFile(@PathVariable("groupId") UUID reportId,@RequestBody UUID fileId) {

    // Internal Operations - TODO

    return 'SUCCESS';
}

Угловой код HTTP PUT:

updateGroupFile() {
    const groupId: string = 'b9ddab47-56a2-11e9-8882-484d7ee28bcd';
    const fileId: string = 'c0822353-56a2-11e9-8882-484d7ee28bcd';

    const filePath = `http://localhost:3000/api/group/${groupId}/updateFile`

    return this.http.put<SimpleResponse>(filePath, fileId);
}

Как только я подписываюсь на метод Angular, я получаю сообщение об ошибке:

{
   "timestamp":"2019-04-04T06:30:32.098+0000",
   "status":400,
   "error":"Bad Request",
   "message":"JSON parse error: Unrecognized token 'c0822353': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'c0822353': was expecting 'null', 'true', 'false' or NaN\n at [Source: (PushbackInputStream); line: 1, column: 10]",
   "path":"/api/group/b9ddab47-56a2-11e9-8882-484d7ee28bcd/updateFile"
}

Я пытался сделать то же самое в POSTMAN, он работает, но в приложении Angular не работает.

1 Ответ

0 голосов
/ 04 апреля 2019

Вы получаете эту ошибку, поскольку второй параметр put() ожидает допустимый JSON. Действительный код будет

updateGroupFile() {
    const groupId: string = 'b9ddab47-56a2-11e9-8882-484d7ee28bcd';
    const fileId: string = 'c0822353-56a2-11e9-8882-484d7ee28bcd';

    const filePath = `http://localhost:3000/api/group/${groupId}/updateFile`

    return this.http.put<SimpleResponse>(filePath, {fileId});
}

или если вам нужно конкретное имя параметра, тогда

return this.http.put<SimpleResponse>(filePath, {'id': fileId});
return this.http.put<SimpleResponse>(filePath, {'uuid': fileId});

и так далее ... Это также зависит от вашей реализации UUID в вашем коде

...