删除方法www.example.com react axios中的请求正文为空node.ls

yzuktlbb  于 2023-01-01  发布在  Node.js
关注(0)|答案(2)|浏览(79)

我有一个问题,当我发送删除请求到服务器使用axios我的请求体是空的,但与相同的代码在邮政方法它的工作。
此处ID不为空

export const deleteClothes = async (id) => {
    id.id = Number(id.id)
    const {data} = await $authHost.delete('api/clothes', id)
    return data
}

但此处请求体为空

async delete(req, res) {
    const{id} = req.body
    await Clothes.destroy({
        where:{
            id: id
        }
    })
    return res.json(`Clothes deleted: ${id}`)
}

相同的发布方法:

export const createType = async (type) => {
    const {data} = await $authHost.post('api/type', type)
    return data
}

我不知道该怎么办,我已经试过很多方法了

5fjcxozz

5fjcxozz1#

如果我们回顾一下the API documentation,我们可以看到post方法的签名是axios.post(url[, data[, config]]),但是delete方法的签名是axios.delete(url[, config])--注意第二个参数是一个配置对象,而不是像post那样的请求主体,你要把你想用作主体的对象直接作为配置对象传递。
而是传递一个具有data属性的配置对象:

const {data} = await $authHost.delete('api/clothes', {data: id})
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^

旁注:将deleteClothes参数命名为id是一个带有id属性的对象,这会让人感到困惑。在上面的代码中,id是对象,这似乎正是您在post示例中所希望的。我建议将该参数重命名为反映 object 是什么的内容(一件衣服或其他内容)。

fcg9iug3

fcg9iug32#

DELETE方法不应具有请求正文,因为并非所有请求都具有正文。相反,您应在查询字符串中包含要删除的信息,或将其作为URL中的路径参数。例如API/clothes/clothID

相关问题