NodeJS Axios GET返回不可读响应

3phpmpom  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(162)

我有一个express应用程序,它带有一个简单的GET(使用axios(1.2.0)):

const result: AxiosResponse = await axios.get('https://jsonplaceholder.typicode.com/posts')

result.data以一个模糊的、编码错误的字符串结束:

k�H���>������T��N.���r�H�v �_"9'?1���J��\���LA.  ��H���!�b�R� 9�܅��ڹ�K�}��%��A�v�Q*�g�dwf� ..goes long

我已经尝试了不同的配置添加到请求,但没有运气。也找不到任何相关的职位在其他地方。
为什么会这样?我该怎么补救?

mwecs4sa

mwecs4sa1#

您需要在axios.get头中添加带有application/json的Accept-Encoding
默认值为gzip
您可以将1.2与以下代码一起使用

const axios = require('axios')

const getTitles = async () => {
    try {
        const resp = await axios.get(
            'https://jsonplaceholder.typicode.com/posts',
            {
                headers: {
                    'Accept-Encoding': 'application/json',
                }
            }
        );
        console.log(JSON.stringify(resp.data, null, 4));
    } catch (err) {
        // Handle Error Here
        console.error(err);
    }
};

getTitles();

测试结果

$ node titles.js
[
    {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio r
eprehenderit",
        "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et
cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem
eveniet architecto"
    },
    {
        "userId": 1,
        "id": 2,
        "title": "qui est esse",
        "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor b
eatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut
 reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
    },
    removed
mqxuamgl

mqxuamgl2#

编辑

已尝试使用chrome开发控制台执行GET操作,请求成功。数据已正确解码。

resp = await fetch("https://jsonplaceholder.typicode.com/posts").then(res=> res.json())

所以我猜这是一个axios的问题。尝试使用旧版本。
这似乎是JsonPlaceholder API的问题。
Axios无法正确解码Json,可能是因为某些服务器在压缩方面配置错误。
我试着用另一个有相同响应头和相同压缩的URL获取,它工作得很好。

axios.default.get("https://reddit.com/r/android.json")

相关问题