【问题标题】:How to make a HTTP post request like a HTML form using Axios?如何使用 Axios 像 HTML 表单一样发出 HTTP 发布请求?
【发布时间】:2021-06-17 18:44:21
【问题描述】:

我正在尝试连接到需要 HTTP 发布请求的 API (nova.astrometry.net),就像表单(x-www-form-encoded)一样。我为此使用 Axios,但仍然收到此错误作为来自 API { status: 'error', errormessage: 'no json' }的响应@

这是代码供参考

axios({
    method: 'post',
    url: 'http://nova.astrometry.net/api/login',
    data: {
        'request-json': JSON.stringify({ "apikey": process.env.API_KEY })
    },
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
}).then((response) => {
    console.log(response.data)
});

我也尝试使用请求库,但得到了相同的响应。

【问题讨论】:

    标签: javascript node.js post axios


    【解决方案1】:

    api要求的内容类型是'application/x-www-form-urlencoded',但是你发送的是'application/json'

    要发送该数据,请执行以下操作:

    const body = new URLSearchParams();
    body.append('request-json', JSON.stringify({ "apikey": process.env.API_KEY }));
    

    然后在axios的body字段中使用上面的body。

    axios.post('http://nova.astrometry.net/api/login', body, {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    })
      .then(res => console.log(res.body))
      .catch(console.error);
    

    【讨论】:

    • { status: 'error', errormessage: 'need "apikey"' } 马上收到。
    • 这可能是因为 api 密钥在 process.env 中不可用。记录它并查看它是否已定义。
    • process.env 已启用。我为此使用 dotenv。
    猜你喜欢
    • 2020-07-21
    • 2022-12-10
    • 2021-09-01
    • 2019-03-29
    • 2021-06-30
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多