尝试使用 Postman、cosmosDB 和 NodeJs 处理 POST 请求

Trying to work with POST request using Postman, cosmosDB and NodeJs

我正在努力学习API的工作方式。在这里,我试图让 POST 方法起作用。我正在使用这段代码在数据库中制作文档,

app.post('/add', async (req, res) => {
    try {

        const data = require('./test.json');
        

    const newItemId = Math.floor(Math.random() * 1000 + 10).toString();
    
    data.id = newItemId;
    data.Partnership_Id = newItemId;
 
    
    //for testing purpose only
    let documentDefinition = {
    "id": newItemId,
    "name": "Angus MacGyver",
    "state": "Building stuff"
    };
        
    // Open a reference to the database
    const dbResponse = await cosmosClient.databases.createIfNotExists({
        id: databaseId
    });
    let database = dbResponse.database;

    const { container } = await database.containers.createIfNotExists({id: containerId});

    // Add a new item to the container
    console.log("** Create item **");
    const createResponse = await container.items.create(data);
    res.redirect('/');

    } catch (error) {
        console.log(error);
        res.status(500).send("Error with database query: " + error.body);
    }
})

这里我使用test.json作为数据输入。我正在使用 newItemId 为 data.id 和 data.Partnership_Id 制作假 ID。 通过这种方法,我可以在数据库中创建一个文档,也可以检查 Postman,但是 Postman 的 Body 标签中没有任何内容。 我对这部分感到困惑,我觉得新文档的数据应该通过 Postman Body 传递,而不是我使用 newItemId 传递给它。 这可能是一个愚蠢的问题,但我正在努力了解 API 的工作原理以及如何在其中传递数据。

创建数据库资源时,ID 几乎总是在后端自动生成(或至少应该是),因此您所拥有的似乎是正确的。我建议使用像 nanoid 这样的库来生成 ID,只是为了消除潜在的错误。

它是 RESTful 对 return 创建数据的约定,因此在这种情况下,您将 return 在创建的文档上 JSON,然后在前端(以确保后端前端完全分离 - 所以你可以说分别托管它们)。你的方法也很好,但也很有效。

我的建议是将您的后端和前端视为完全独立的,我个人会为每个项目准备一个项目。这样就更清楚了一切是如何联系在一起的。