邮递员在测试 GET 时返回 200 但正文为空

Posted

技术标签:

【中文标题】邮递员在测试 GET 时返回 200 但正文为空【英文标题】:postman when testing GET it returns 200 but with an empty body 【发布时间】:2021-10-16 08:25:37 【问题描述】:

当我尝试使用邮递员测试我的 GET API 时,它返回 200 但正文为空,我期望获得的数据不会显示。

找到我的 server.js 文件和 POSTMAN 结果的截图

app.get('/api/articles/:name', async (req, res) => 

    try 
        const articleName = req.params.name;

        const client = await MongoClient.connect('mongodb://localhost:27017',  useNewUrlParser: true );
        const db = client.db('my-blog');

        const articleInfo = await db.collection('articles').findOne( name: articleName )
        res.status(200).json(articleInfo)

        client.close()
    
    catch (error) 
        res.status(500).json( message: 'error connecting to db', error )
    

)

【问题讨论】:

您检查过代码中articleInfo 的值吗?您可以输入console.log 或在调试模式下运行应用程序。 是的,我得到“未定义”仍在尝试解决它,我怀疑我的数据库连接,因为数据通常来自数据库。 我在我的机器上查看了你的代码,它运行良好,检查你的收藏名称是否以's'结尾 例如:文章不是文章 所以,您的代码没有任何问题。我相信两种情况是可能的,数据库连接有问题(检查参数)或数据库与给定的文章名称不匹配 @PrakashBhosale Ohkay,我的收藏名称是正确的谢谢。 【参考方案1】:

在这里,我已将您的代码更新如下,请将您的 server.js 移出 /src 文件夹。它现在可以工作了。

const express = require('express')
const bodyParser = require('body-parser')
const MongoClient = require("mongodb");
const url = 'mongodb://127.0.0.1:27017';
const app = express();
app.use(bodyParser.json());
app.get('/api/articles/:name', async (req, res) => 
    try 
        const articleName = req.params.name;
        MongoClient.connect(url, async (err, db) => 
            const client = db.db('article');
            const articleInfo = await client.collection('articles').findOne(title: articleName)
            res.send(articleInfo)
        );

     catch (error) 
        res.status(500).json( message: 'Error connecting to db', error );
    

);
app.listen(8000, () => console.log('Listening on port 8000'));

【讨论】:

如果它是一个解决方案,请投票给一个有用的答案。提前谢谢你

以上是关于邮递员在测试 GET 时返回 200 但正文为空的主要内容,如果未能解决你的问题,请参考以下文章

发布邮递员表单数据时请求正文为空

Azure APIM 在预检和从 axios 发出的 GET 请求时返回空响应正文,状态代码为 200

mern - 更新后的值在数据中为空

为啥 IIS 返回空响应?

Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应

Autodesk Token Flex API - 获取合同空正文响应