作者回复: 感谢回答!回答正确。
第一个问题属于开放性的,当然,也有很多可供比较的其它方面。
对于删除用户的接口设计,回答得非常全面:
(1)动作要以 HTTP 方法体现出来,而不是放在 URL 里面;
(2)要使用 userId,而不是 name,userId 才是唯一的。
(3)资源使用复数“users”,完全正确。
作者回复: 感谢回答!
严格来说,行为应当放到 HTTP 方法中去,而不是 URL 中。还有使用 userName 本身的问题,你可以看一下另一位朋友的回答。当然,现在不少接口其实并不是很符合 REST 风格的,方法放在 URL 中就是其中一个方面。至于不允许暴露账号信息是特殊的业务需要,能想到这一点非常好,但它并非 REST 的要求。
作者回复: 好问题。
我解释一下文中的含义:你理解得没错,它们是互相组合的关系,而非取代的关系。
进一步展开说,当载体体现的是它上面的数据的时候,就是 HTML、XML 或者 JSON 它们关心的了。我们在讲 REST 的时候,特别是设计 REST 风格的接口的时候,我们并不是到 HTTP 层面就戛然而止了,我们还会继续设计消息体,这就往往会提到这三者之一。
作者回复: 👍
作者回复: 接口命名方面,没有统一的标准,但你可以看看第五讲扩展阅读的 AnyAPI,看看其他人是怎么做的,大多数接口服务的命名风格是一致的。
作者回复: 对,行为不能出现在 URI 里面,你可以看一下另一位朋友 的回答。
作者回复: 在使用唯一的 id 去删除指定资源时,删除多次和删除一次效果一样
作者回复: 好问题。
我来解释一下文中的意思。“幂等”的效果是,执行了多次和执行一次的效果一样,而 REST 通常的删除设计都是基于唯一 id 的,因此从这个角度来说,删除多次,确实和删除一次是一样的,因为只有一次是完成了真正的删除。
但是创建就不是了,因为创建的时候,REST 的设计往往是不提供这个唯一 id 的(唯一 id 是服务端自动生成的),那么如果提交多次,就变成了创建了多个对象。
作者回复: SOAP 还是常有使用的,特别是一些电信软件、传统软件等领域。当然,确实 REST 更常见。
作者回复: 为什么别扭?:)