我正在开发一个REST API,用于管理公司的汽车,员工可以在这里乘坐汽车和乘车。山脊有一个称为isActive
的特性。
当他们完成骑行时,isActive
属性需要设置为false
。
我的API目前的工作方式是(PATCH
HTTP请求(是/api/v1/rides
。
用户发送带有JWT令牌的PATCH
请求,API根据HTTP上下文确定它是哪个用户,找到与用户相关联的单独乘车,将isActive
属性更新为false,并更新用户输入的string
类型的短评论。
这可以接受吗?
我发现的每个源都表示端点应该看起来像/api/v1/rides/{rideId}
,但我不明白为什么在这种情况下它是必要的,因为它需要在前端进行更多的工作。
这可以接受吗?
可能不是
PATCH /api/v1/rides
是改变CCD_ 10资源的请求;也就是说,当您发送CCD_ 11请求时,您所要求的资源相同。如果您打算修改一些其他资源,那么您打算修改的资源应该是目标URI。
潜在的问题是:通用HTTP组件认为所有资源都以相同的方式理解请求。这就是REST"自描述性消息"接口的约束。当您宣传您的资源支持PATCH时,我的第三方浏览器/spider/缓存/代理可以假设PATCH对您的资源的意义与对网络上其他所有资源的意义相同。
当因为您的资源使用了与标准不同的语义而出现昂贵的错误时,这是您的责任,而不是客户。
PATCH的意思是"将这些更改应用于由目标URI标识的资源"。如果您打算将编辑应用于其他资源,那么您应该指定该标识符。
如果您正在做一些非标准的事情,那么您可能应该使用POST而不是PATCH作为请求中的方法标记。参见Fielding 2009:
POST在HTTP中有许多有用的用途,包括"此操作不值得标准化"的一般用途