amazon-web-services - REST API 更新 PIN(PUT、PATCH 和 POST)
问题描述
我正在使用 spring boot创建一个简单的CRUD RESTful API,用于管理 4 位PIN。我在使用哪些 HTTP 动词时遇到问题。
以下是我的假设:
- 对于 create,最合适的动词应该是
POST
orPUT
。我使用它是PUT
因为它是幂等的(它只会影响资源一次,与发送的请求数量无关) - 对于我正在使用的部分更新
PATCH
- 对于我正在使用的完整更新
PUT
问题是,我担心安全问题。该服务将在 AWS 私有云中的容器内运行,并由同一云中的其他服务访问。
这个信息安全答案说 for updatesPOST
更正确(比PUT
),但从安全的角度来看,这并不重要,因为调用将在 https 中调用。
另一方面,这个页面说POST
应该使用它来“隐藏”查询请求中的 PIN。
所以,我的问题是:我应该使用哪个HTTP 动词?非常感谢 API 设计专家的回答。
更新:
这是 ECS 中的一个 spring-boot 微服务(MS)。将从其他内部 MS 消耗。目的是管理和验证用户的 PIN。
模型:
- 这是与 propertyX 相关联的用户 pin。该属性位于枚举中。
- userId 是来自多个 Mss/DB 中使用的其他表的 id,并且没有约束(没有 FK 等)。
- DB:Aurora 只有 1 个表:id(自动增量)、userId、pin(code)、propertyX
所需的端点/操作:
- 创建 PIN 实体。(输入:userId、pinCode、属性)
- 验证 pinCode。(输入:用户 ID + 密码)
- 只更新 pinCode。(输入:userId、newPinCode)
- 删除 PIN 实体。(输入:用户ID)
- 获得财产X。(输入:用户ID)
- 仅更新 propertyX。(输入:userId newPropertyX)
解决方案
推荐阅读
- android - android 4 ssl 上的改造 + okhttp
- android - 为什么运行应用程序后绑定服务中的公共变量会发生变化?
- c++ - 当父类被删除时,方法局部的静态变量会发生什么?
- php - php表单没有将数据插入mysql数据库,虽然没有连接错误
- java - 如何在 RazorPay 中获取创建的 orderID?
- excel - 在插入行时动态扩展范围
- java - 是否可以返回数据集而不是 MyBatis 中的任何映射模型类?
- reactjs - 多次反应浅比较工作?
- python - 如何修复 # 问题 400 指定 FLAC 编码以匹配文件头?
- angular - 当我输入超过 3 个字符时如何过滤数据