簡體   English   中英

Node Express API +前端

[英]Node Express API + Front-End

我正在編寫我的第一個“ solo” nodejs Webapp。 它基於以前的應用程序(我通過遵循某種教程/課程進行編碼),該應用程序是Express REST API,允許您添加/刪除/更新/列出待辦事項列表。 我還使用jwt / bcrypt實現了用戶身份驗證。 所有這些都存儲在MongoDB數據庫中。

還要注意,所有端點都返回JSON。

我現在正在嘗試向應用程序添加前端。 API端點位於/api/endpoint1/api/endpoint2等,並且視圖呈現在/view1/view2等上。我這樣做的目的是為了使我可以從JSON中獲取純JSON響應API,或在呈現的網頁中顯示。

我首先使用jQuery的ajax進行調用,但我意識到這不是我想要的方法。 我刪除了網頁上的所有js腳本,並開始直接在服務器上工作,並使用從api獲取的信息來呈現頁面。

這就是我現在所擁有的:

server.js(主文件)[示例]

// RENDER 'GET TODOs'
app.get('/todos', authenticate, (req, res) => {
    let auth = req.cookies['x-auth'];
    request({
        url: 'http://localhost:3000/api/todos',
        headers: {
            'x-auth': auth
        }
    }, function (error, response, body) {
        if (error || response.statusCode !== 200) {
            return res.status(response.statusCode || 500).send('Error'); // TODO
        }
        let bodyJSON = JSON.parse(body);
        res.render('todos', {
            title: 'Todo App - Todos',
            todos: bodyJSON.todos
        });
    });
});

// API endpoint to 'GET TODOs' (JSON)
app.get('/api/todos', authenticate, (req, res) => {
    Todo.find({
        _creator: req.user._id
    }).then((todos) => {
        res.send({todos});
    }, (err) => {
        res.status(400).send(err);
    });
});

我不知道為什么,但是這一切對我來說都很奇怪。 我想知道這是否應該這樣做。 我的意思是,這是制作API +前端節點應用程序的好方法/做法嗎?

另外,我兩次使用auth中間件:在視圖和API本身中。 我想這可以嗎?

使用React / Angular可能會更好,但這是一個很小的應用程序,我只想制作一個非常簡單的前端。

保持簡單。

如果使用服務器端HTML渲染,則不需要REST API,只需將其刪除即可。 如果是ajax前端或移動應用程序,則需要一個API。

如果您需要一種組合方法(服務器端渲染+移動應用程序或帶有一些Ajax的服務器端渲染),則第一步,您需要將數據庫查詢代碼隔離到一個單獨的模塊中(這實際上總是一個好主意)並直接從您的API和您的視圖中使用該模塊,避免在服務器端視圖中使用API​​。

這樣,您將消除過多的身份驗證,並使調試更加容易,代碼也將變得更加整潔,從而更易於維護。

另外,React並不那么復雜,我肯定會試一試:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM