1. 程式人生 > 實用技巧 >node用express寫後端restful介面實戰六:資料庫的增刪改查:根據請求引數查詢單篇文章、修改單篇文章、刪除單篇文章、

node用express寫後端restful介面實戰六:資料庫的增刪改查:根據請求引數查詢單篇文章、修改單篇文章、刪除單篇文章、

這一節要來完成檢視修改刪除三個介面。這三個介面有一定的的相似性,再有了前面課程的基礎後,相信咱們能順利的搞定他們。

查詢

先來做檢視一篇文章的介面,開啟資料庫看看,所有的記錄第一個欄位,都是 id,而且這個 id 是自增的,永遠不會重複的。如果想查詢到一篇文章,最好的方法,就是使用這個唯一的 id 值來找到它。

router.get('/:id', async function (req, res, next) {
    res.json({id: req.params.id});
});

那麼我們定義的路由的時候,就在 / 後面加上一個 :id。這樣定義後,表示這裡可以接受一個 文章id

引數。開啟 Postman,當請求的路徑是 http://localhost:3000/articles/4 這種格式的時候,這裡的 4,就會對應到路由上的 :id 了。

接在就是要想辦法將這個 id 給取到,使用的方法是用 req.params.id。使用 res.json 輸出一下看看。

果然可以看到使用者傳過來 4 這個 id 了。

接受到 id 後,在模型中呼叫 findByPk。 就可以在 Articles 表中找到當前文章,還是輸出 json 就好了。

router.get('/:id', async function (req, res, next) {
    var article = await models.Article.findByPk(req.params.id);
    res.json({article: article});
});

Tips: findByPk,這裡的 PkPrimary Key 也就是主鍵的縮寫。一般每個表都有個主鍵,如果沒有特殊命名,一般來說就是 id 欄位。

開啟 Postman,再來來測試一下。確實可以拿到當前文章

修改

router.put('/:id', async function (req, res, next) {
    var article = await models.Article.findByPk(req.params.id);
    article.update(req.body);
    res.json({article: article});
});

修改介面和剛才的查詢介面類似,需要注意的是這裡是 put 請求。也是要接受一個 id,查詢到到當前文章以後,使用 update 方法來修改資料。最後返回被修改過的文章就好了。

重新整理資料庫,當前記錄確實被修改了

刪除

router.delete('/:id', async function (req, res, next) {
    var article = await models.Article.findByPk(req.params.id);
    article.destroy();
    res.json({msg: '刪除成功'});
});

最後一個介面,刪除資料。先使用新增介面,胡亂新增一條新資料,然後通過介面來刪除它。這裡使用的請求方式是 delete。也是查詢到當前文章後,直接呼叫 destroy 方法刪掉它。因為文章已經被刪除了,也沒啥好返回的了,就簡單的返回一個 msg: '刪除成功' 好了。

總結

基礎的 CURD 四個介面,也就這麼點內容了。需要重點注意的是他們的請求方式:

路由 請求方式 含義
/articles get 查詢所有文章
/articles/:id get 查詢指定 id 的文章
/articles post 新增文章
/articles/:id put 編輯指定 id 的文章
/articles/:id delete 刪除指定 id 的文章

大家可以觀察下,他們有些路徑是一模一樣的,只是請求的方式不同,實際對應的路由方法也就不同了。這種寫法的路由就是符合 Restful 風格的路由。