#java #reactjs #spring-boot
Вопрос:
Я нахожусь в процессе создания полноценного проекта, состоящего из интерфейса React-js, серверной части Java Spring-Boot и базы данных SQL. У меня есть простой набор классов/интерфейсов/контроллеров, настроенных для получения списка объектов в базе данных, а также для создания/удаления/изменения отдельных объектов.
После связывания базы данных и серверной части и подтверждения того, что все запросы контроллера были функциональными, я попытался использовать их на интерфейсе. Все запросы GET работали нормально, но попытка использовать любой запрос, который требовал передачи тела запроса, похоже, не работала. Вот как все произошло:
Во-первых, вот запрос на сопоставление в фоновом режиме. Я использую автоматическую проводку для этих запросов.
const createNewIS = (e) => {
return fetch("http://localhost:8080/ideas/create", {
method: 'POST',
crossDomain: true,
headers: {
'Accept': 'nology-brainstorm/json',
'Content-Type': 'nology-brainstorm/json',
'API-Key': 'secret'
},
body: JSON.stringify({
"spaceid": 4,
"name": newISName,
"description": newISDesc
})
}).then((nothing) => {
updateNewISPopUp(e);
})
}
Во-вторых, вот функция извлечения на интерфейсе. Я попытался запустить эту функцию без заголовка API-ключа, без .then() в первом предложении, а также без инкапсуляции имен ключей класса в речевые знаки. Ни одно из них, казалось, не имело никакого эффекта, и результат всегда был следующим:
Изображение 2 (Консоль браузера)
Похоже, запрос сделан, и тело, похоже, успешно передано. Но когда я проверяю базу данных или состояние в моем интерфейсе, в котором хранятся извлеченные объекты, новый объект в нее не добавляется. Приносим извинения, если решение здесь очевидно, но кто-нибудь знает, почему запрос выполняется неправильно? Я смотрел на это в течение нескольких часов, но безуспешно.
Комментарии:
1. Пожалуйста, введите код в следующий раз @Alice
2. Обязательно скопирую код непосредственно в следующий раз, приносим извинения.
Ответ №1:
415-Неподдерживаемый тип носителя. Как правило, это связано с вашим типом контента
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415
Вы передаете пользовательский тип контента, поэтому вам также необходимо определить его на своем внутреннем контроллере.
@PostMapping(path = "users",
consumes = "nology-brainstorm/json",
produces = "nology-brainstorm/json")
Комментарии:
1. Я попытался добавить атрибуты «потребляет» и «производит» в запрос на внутреннем контроллере, но это не изменило результат; по-прежнему ошибка 415: @PostMapping(путь = «/идеи/создать», потребляет = «nology-мозговой штурм/json», производит = «nology-мозговой штурм/json»)
2. Пожалуйста, покажите свой код класса IdeaSpace @Alice
3. Вот код для самого класса, если вы имели в виду контроллер или интерфейс вместо этого, приношу свои извинения. pastebin.com/k2Y5RtXd