提取错误 - 请求正文中缺少 \ "data"有效负载



GraphQL和Strapi API发生了变化,它们为json对象添加了一个父级,其中必须获取的整个json对象必须有一个名为data的父密钥,如果您在没有该密钥的情况下提交请求,API将被拒绝,并返回400错误。

我提交的JSON是这样的

{"title": "aaa", "rating": "3", "body": "aa", "categories": "5"}

api要求它像这个

{"data" : {"title": "aaa", "rating": "3", "body": "aa", "categories": "5"}}

如何调整代码以便在此JSON对象中插入父键?

有了Postman,我可以在Strapi中发布数据,通过提交这样的数据:

{ "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]
}
}

我的完整代码如下:

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...)

尝试将fetch调用更改为此,请注意body字段:

fetch('http://localhost:1337/api/reviews/', {
method: 'POST',
mode: 'cors',
headers: { "Content-Type": "application/json",
"Authorization" : "Token " + token },
body: JSON.stringify({data:review})
})

相关内容

最新更新