React.js: Выборка POSTMapping из бэкенда JavaSpring-загрузки отправляет запрос, но ничего не делает

#java #reactjs #spring-boot

Вопрос:

Я нахожусь в процессе создания полноценного проекта, состоящего из интерфейса React-js, серверной части Java Spring-Boot и базы данных SQL. У меня есть простой набор классов/интерфейсов/контроллеров, настроенных для получения списка объектов в базе данных, а также для создания/удаления/изменения отдельных объектов.

После связывания базы данных и серверной части и подтверждения того, что все запросы контроллера были функциональными, я попытался использовать их на интерфейсе. Все запросы GET работали нормально, но попытка использовать любой запрос, который требовал передачи тела запроса, похоже, не работала. Вот как все произошло:

Изображение 1

Во-первых, вот запрос на сопоставление в фоновом режиме. Я использую автоматическую проводку для этих запросов.

 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