Las API de GraphQL y Strapi se cambiaron y agregaron un nivel principal al objeto json donde todo el objeto JSON que se debe buscar debe tener una clave principal llamada data , si envía la solicitud sin esta clave, la API se rechaza con un error 400
Mi JSON que envío es así
{"title": "aaa", "rating": "3", "body": "aa", "categories": "5"}La api requiere que sea así.
{"data" : {"title": "aaa", "rating": "3", "body": "aa", "categories": "5"}}¿Cómo puedo modificar mi código para insertar una clave principal en este objeto JSON?
Con Postman puedo publicar los datos en Strapi, enviando los datos de esta manera:
{ "data": { "title": "the best car", "rating": 7, "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt. ", "categories": [3,7,4] } }Mi código completo está abajo:
import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { useQuery, gql } from '@apollo/client' import { useParams, Link } from 'react-router-dom' const CATEGORIES = gql` query GetCategories { categories{ data { id attributes{ name } } } } ` const token ="AlaBala" const Create = () => { const [title, setTitle] = useState(''); const [body, setBody] = useState(''); const [rating, setRating] = useState(3); const [categories, setCategories] = useState(5); const history = useNavigate(); const { loading, error, data } = useQuery(CATEGORIES) if (loading) return <p>Loading categories...</p> if (error) return <p>`Error! ${error}`</p> const handleSubmit = (e) => { e.preventDefault(); const review = { title, rating, body, categories }; console.log(review) fetch('http://localhost:1337/api/reviews/', { method: 'POST', mode: 'cors', headers: { "Content-Type": "application/json", "Authorization" : "Token " + token }, body: JSON.stringify(review) }) } return (object etc...)Intente cambiar su llamada de búsqueda a esto, preste atención al campo del cuerpo:
fetch('http://localhost:1337/api/reviews/', { method: 'POST', mode: 'cors', headers: { "Content-Type": "application/json", "Authorization" : "Token " + token }, body: JSON.stringify({data:review}) })