JSON.stringgify对于请求体内只有一个变量的时候会将变量名去掉

55 阅读1分钟

问题: 在使用Ant Design Pro框架调用request进行请求发送时,由于后端接口要求,需要将请求体转化为application/json形式进行发送。

以下是出现问题的代码:

export async deleteUser(
    body: {
        id: string,
    }
) {
    return request('/api/user/delete', {
        method: 'POST'
        body: JSON.stringify(body)
    })
}

预期请求体:

{"id": "1345"}

实际执行时的请求体:

"1345"

解决方法: 这可能是Stringify的一个特点。要想正常发送Json形式的单变量的请求体,我们需要对请求的body进行字符串拼接:

export async deleteUser(
    body: {
        id: string,
    }
) {
    return request('/api/user/delete', {
        method: 'POST'
        // 在外边拼接上变量名id以及外围的大括号
        body: '{"id":' + JSON.stringify(body) + '}' 
    })
}

拼接后request请求返回200,成功删除了id为1345的用户。