REST API更新PIN(PUT,PATCH,POST)

时间:2019-02-19 15:50:49

标签: amazon-web-services rest spring-boot security api-design

我正在使用Spring Boot创建一个简单的CRUD RESTful API,用于管理4位数字PINs。 我在使用哪个HTTP动词时遇到问题。

这是我的假设:

  • 对于create而言,最合适的动词应为POSTPUT。我之所以使用PUT是因为它是幂等的(它只会影响资源一次,而与发送多少请求无关)
  • 对于部分更新,我正在使用PATCH
  • 有关完整更新,我正在使用PUT

问题是,我担心安全性问题。该服务将在AWS私有云的容器内运行,并被同一云中的其他服务访问。

This infosec answer说,对于更新POST(比PUT)更正确(但从安全角度来看,这没关系,因为该调用将在https中进行。

另一方面,this page表示应使用POST以便从查询请求中“隐藏” PIN。

所以,我的问题是:应该使用哪个HTTP动词 s ?非常感谢API设计专家的解答。

更新:

这是ECS中的春季启动微服务(MS)。将被其他内部MS消耗。目的是管理和验证用户的PIN。

型号:

  • 这是关联了propertyX的用户图钉。该属性包含在枚举中。
  • userId是来自多个Mss / DB中使用的其他表的ID,并且没有约束(没有FK等)。
  • DB:仅有1个表的Aurora:id(自动递增),userId,pin(代码),propertyX

所需的端点/操作:

  • 创建PIN实体。 (输入:userId,pinCode,属性)
  • 验证密码。 (输入:userId +引脚)
  • 仅更新pinCode。 (输入:userId,newPinCode)
  • 删除PIN实体。 (输入:userId)
  • 获取属性X。 (输入:userId)
  • 仅更新propertyX。 (输入:userId newPropertyX)

0 个答案:

没有答案