2015-12-25 42 views
0

想象這種情況下,我想更新一本書的細節。所以我應該對那本書的ID,我喜歡這樣使用POST從數據庫中檢索指定的項目

router.get('/edit/:book_id', function(req, res) { 
    Products.getBookById(req.params.book_id, function(err,product){ 
     //render 
    }); 
}); 

<a href="edit/3434050348984585646">update this book</a> 

我完了,我的流程是正確的,但我唯一擔心的是網址是不是很好,像本地主機:8000 /書籍/更新/ 3434050348984585646

如何隱藏網址?如何在我的情況下使用POST?

回答

1

從您的路徑定義中刪除了:bookId,並改變你的鏈接到一個表格:

JS

router.get('/edit', function(req, res) { 
    Products.getBookById(req.params.book_id, function(err,product){ 
     //render 
    }); 
}); 

HTML

<form action="edit" method="post"> 
    <input type="hidden" name="book_id" value="3434050348984585646"> 
    <input type="submit" value="Update this book"> 
</form> 
+0

謝謝@Samuel! –

0

另一種選擇是使用衆所周知的POST/Redirect/GET pattern (它具有防止雙重POST的優點)。

好處是,你不必使用URL參數(這可能會有安全影響)或必須處理隱藏的表單域。

因此,您照常收到POST,並在處理完參數後,向您的客戶端發送重定向消息,代碼爲302 "Found"或(首選)303 "See Other"以及您要重定向到的URL。發送一個302 可能導致客戶端使用GET而不是原始請求方法來調用您重定向到的URL(它通常會),303代碼顯式指示客戶端使用GET,而不管原始請求方法是。