javascript - 通过 req.params.id 与 req.body.id 传递 id
问题描述
所以我最近开始学习后端,使用节点/表达式。我正在构建一个用于学习目的的小型 REST API,具有以下路线:
GET /api/products >> to display a list of products
GET /api/cart >> to display list of items inside the cart
DELETE /api/cart/:id >> to delete an item from the cart
现在,我希望能够使用 POST 方法将商品添加到购物车,当然应该是:
/api/cart >> and pass the item id in the body, so req.body.id
或者
/api/cart/:id >> and pass the item id with req.prams.id ??
我知道这两种方法都有效,但有人告诉我,使用 POST 方法,最好通过正文传递它,所以我想了解原因,因为在这种特定情况下,我没有创建一个全新的项目(在那情况下我当然会通过正文传递数据),但我已经在产品列表中拥有该项目,所以我只想检索它并将其添加到购物车。如果我为这个api创建前端,其中一个会更好吗?或者整个事情是如何运作的?首选方法是什么?
谢谢
解决方案
您可以在正文中放置比在 url 中更多(多样化)的数据。您可以在正文中传递任何字符串(特殊字符),而在 url 中对它们进行编码会使您容易受到状态 414(请求 URI 太长)的影响。而且在传递数组和复杂对象时使用主体要容易得多:)
推荐阅读
- ocaml - How do you split a string into lists unless it is inside quotation marks ("") in Ocaml?
- javascript - ReactJS 状态变化不一致
- c# - 指数分布的 Perlin 噪声的实现问题
- java - 在 CountDownTimer 封闭范围内访问上下文
- amazon-web-services - 已将压缩 S3 数据存储到 ElasticSearch Aws
- c++ - 使用 freeglut 在 Windows 10 上出现 glDebugMessageCallback 问题
- ios - 当 NSPersistentStoreCoordinator.addPersistentStore 随机时应用程序崩溃
- python - TypeError:'float'对象不可下标--Python
- sql-server - SSRS 自动导出每个参数值的报告
- asynchronous - Flutter - 有没有办法将事件从我的 API 填充到 TableCalendar 的“事件”属性