构造您的后端增长:组织API电话的指南
#javascript #教程 #react #api

介绍

在我的previous blog中,我们迈向了使用DataMotion's API的第一个API呼吁,以确保我们的安全消息中心。但是,随着我们添加更多功能和功能,事情很快就会纠结。现在,我们已经用最初的API呼叫弄湿了,现在该重组后端以确保使用最佳实践确保可伸缩性。

DataMotion's APIs提供了一种安全且合规的消息传递方法,非常适合需要可靠数据交换的应用程序。

为什么要组织?

结构合理的后端:

  • ð§使找到特定功能或文件更容易。
  • ð促进代码可重复使用性。
  • ð加速功能开发,因为您知道一切都在哪里。
  • ð有助于解决错误。

让我们开始!

后端目录结构

您的项目应遵循干净的结构,以确保清晰度。这是建议的设置:

server/
│
│── controllers/
│    ├── authController.js          
│    └── messageController.js       
│
│── routes/
│    ├── authRoutes.js           
│    └── messageRoutes.js    
│
│── utils/
│    └── getToken.js    
│
│── .env       
│── server.js   
│── package.json
└── package-lock.json

让我们深入研究每个部分。

1.控制器(冷0)

控制器处理应用程序的核心逻辑,尤其是与外部服务有关。在我们的上下文中,这些文件负责与Datamotion的API进行交互,处理接收到的数据以及确定响应以发送给客户端。他们充当中介机构,确保我们的路线保持干净和专注,而与API相关的主要操作则是集中的。

authController.js

const axios = require('axios');
const getTokenUtil = require('../utils/getToken');

// Function to get a token from the DataMotion API
exports.getToken = async (req, res) => {
    try {
        const token = await getTokenUtil();
        res.json(token);
    } catch (error) {
        res.status(500).json({ message: "Error fetching token", error: error.response.data });
    }
};

messagesController.js

const axios = require('axios');
const getTokenUtil = require('../utils/getToken');

// Function to get message summaries from the DataMotion API
exports.getMessageSummaries = async (req, res) => {
    try {
        const token = await getTokenUtil();
        const messagesResponse = await axios.get('https://api.datamotion.com/SMC/Messaging/v3/content/messages/?folderId=1&pageSize=10&pageNumber=1&sortDirection=DESC&metadata=true', {
            headers: {
                Authorization: `Bearer ${token.access_token}`
            }
        });
        res.json(messagesResponse.data);
    } catch (error) {
        res.status(500).json({ message: "Error fetching messages", error: error.response.data });
    }
};

2.路线(routes/

路由处理API端点。他们确定当命中特定API端点时调用哪个功能。

authRoutes.js

const express = require('express');
const router = express.Router();

const { getToken } = require('../controllers/authController');

// Endpoint to get token
router.get('/token', getToken);

module.exports = router;

messageRoutes.js

const express = require('express');
const router = express.Router();

const { getMessageSummaries } = require('../controllers/messageController');

// Endpoint to get message summaries
router.get('/', getMessageSummaries);

module.exports = router;

3.实用程序(utils/

在这里,我们存储可能在应用程序的不同部分重复使用的辅助功能或片段。

getToken.js

const axios = require('axios');

// Utility function to fetch the authentication token from the DataMotion API
const getTokenUtil = async () => {
    try {
        const response = await axios.post('https://api.datamotion.com/SMC/Messaging/v3/token', {
            grant_type: "client_credentials",
            client_id: process.env.CLIENT_ID,
            client_secret: process.env.CLIENT_SECRET
        });
        return response.data;
    } catch (error) {
        throw error;
    }
};

module.exports = getTokenUtil;

这一切的心:server.js

在有组织的后端,让我们看一下更新的server.js

const express = require('express');
const cors = require('cors');
require('dotenv').config();

const authRoutes = require('./routes/authRoutes');
const messageRoutes = require('./routes/messageRoutes');

const app = express();
const PORT = 5000;

// Middlewares
app.use(cors());
app.use(express.json()); 

// Route middlewares
app.use('/auth', authRoutes);
app.use('/messages', messageRoutes);

// Start the server
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

此文件现在充当中央集线器,整合了所有内容。使用此设置,将来添加更多路线,控制器或实用程序变得很简单。


到目前为止,您的消息中心的后端应整洁结构并准备好增长。在我们的下一篇文章中,我们将为安全消息中心添加更多功能,并观看我们结构化的后端薪资股息。请继续关注和愉快的编码!

您最近是否解决了重组应用程序的后端?在下面的评论中分享您的经验和技巧!