提取POST请求时出现405错误。为什么“获取”请求确定后我不能发出POST请求?

时间:2019-04-23 00:13:19

标签: javascript api post request fetch

我正在尝试向JSON blob api(这是存储我的JSON文件的简单api)发出POST请求。我出现405错误...
当GOT请求正常工作时,我不知道为什么我不能执行POST请求。

有人可以帮我吗? https://jsonblob.com/api

   const api = "https://jsonblob.com/api/jsonBlob/c30c8afa-6557-11e9-acbe- 
   61e96b39ce8b"

    //it doesn't work
    fetch(api, {
        method: 'POST',
        body: JSON.stringify({
            name: 'dean',
            login: 'dean',
        })
    })
    .then(response => {
        if (response.ok) {
            return response.json()
        }
        throw new Error('Request failed!')
    })
    .then(jsonResponse => {
        console.log(jsonResponse)
    })
    .catch(error => {
        console.log('Request failure: ', error);
    });

   // get request works fine
   fetch(api).then((response) => {
        if (response.ok) {
            return response.json();
            console.log(response)
        }
        throw new Error('Request failed! ');
    })
    .then((Jsondata) => {
        console.log(Jsondata)
    })
    .catch(error => {
        console.log(error.message)
    });

2 个答案:

答案 0 :(得分:0)

根据该API的文档,您需要在标头中指定json内容类型,这可以正常工作:

fetch("https://jsonblob.com/api/jsonBlob", {
    method: 'POST',
    headers: {
      "Content-type": "application/json"
    },
    body: JSON.stringify({
        name: 'dean',
        login: 'dean',
    })
})
.then(response => {
    if (response.ok) {
        return response.json()
    }
    throw new Error('POST Request failed!')
})
.then(jsonResponse => {
    console.log(jsonResponse)
})
.catch(error => {
    console.log('POST Request failure: ', error);
});

答案 1 :(得分:-1)

如果您阅读了该API的文档,则POST请求的请求URL中不会包含blobID-您还需要添加一个值为content-type的{​​{1}}请求标头-否则,您会出现415错误

它在响应标头application/json中返回一个Blob ID,因此,要获取该Blob ID标头供以后使用,您需要访问标头

x-jsonblob