Получение необработанного отклонения (ошибка типа) при получении (СООБЩЕНИЕ)

#node.js #reactjs #jsonforms

Вопрос:

Я следую измененному учебнику по формам JSON, но сталкиваюсь с проблемами при добавлении собственного кода для отправки данных формы в конечную точку REST.

Форма загружается нормально, и я могу заполнить ее данными.

Я получаю Необработанный отказ (ошибка типа): Не удалось выполнить выборку при нажатии на кнопку «Отправить». Я проверяю журналы службы REST, и запрос не доходит до моего контроллера.

Это мое App.js код:

 import './App.css';
import { person } from '@jsonforms/examples';
import {
  materialRenderers,
  materialCells,
} from '@jsonforms/material-renderers';
import React, { useState } from 'react';
import { JsonForms } from '@jsonforms/react';
import { Button } from 'react-bootstrap';

const schema = person.schema;
const uischema = person.uischema;
const initialData = person.data;    

function App() {

  const [data, setData] = useState(initialData);
    
  const sendData = () => 
    fetch('http://localhost:8080/message', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data),
    });

  return (
    <div className='App'>
      <JsonForms
        schema={schema}
        uischema={uischema}
        data={data}
        renderers={materialRenderers}
        cells={materialCells}
        onChange={({ data, _errors }) => setData(data)}
      />
      <Button onClick={() => sendData()} color='primary'>
        Submit
      </Button>
    </div>
  );
}

export default App;
 

Конечная точка REST работает и отлично отвечает на запросы …

 curl --location --request POST 'http://localhost:8080/message' 
--header 'Content-Type: application/json' 
--data-raw '{
  "name": "John Doe",
  "birthDate": "1985-06-02",
  "personalData": {
    "age": 34,
    "height": 5.9
  },
  "occupation": "Programmer"
}'
 

Есть какие-нибудь идеи, что может быть не так?

Ответ №1:

не могли бы вы, пожалуйста, попробовать этот способ? Если это еще не решено, может возникнуть проблема с ошибкой CORS. Вам нужно включить cors в вашем API, вы можете узнать больше о CORS

Пример:

     const sendData = async () =>  {
        const requestOptions = {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(data),
        };
        const response = await fetch('http://localhost:8080/message', requestOptions);
        const data = await response.json();
        console.log(data)
     }
 

Комментарии:

1. Нет, это не помогло. Та же ошибка. Я следовал инструкциям о том, как включить cors в моем API ( spring.io/guides/gs/rest-service-cors ) без всякого успеха.

2. Тестировали ли вы свои API в другом приложении? как Почтальон

3. Я использовал команды curl из терминала, как я показал выше, — если вы это имеете в виду? Я могу попробовать конкретно Почтальона …

4. ДА. Вызов службы от почтальона работает нормально.

5. Я исправляю свой предыдущий комментарий о CORS. Теперь он отлично работает после аннотирования моего ресурса с помощью @CrossOrigin.