我不记得是否有任何人们通常遵循的具体 REST API 设计标准。我怀疑有什么,但你确实想知道一些被认为是“糟糕的 REST 设计”的anti-patterns。
1) 过度依赖querystring。
GET http://api.example.com/services?op=approve_request&userid=12345
这是一个典型的糟糕设计,因为 API services 过于通用且缺乏描述性。
您基本上可以只使用 API services 做任何事情。此外,HTTP 方法的使用也不正确,描述 fetch/retrieve 的GET 应保留用于其目的。更新应该是PUT,创建应该是POST。
另一个缺点是可维护性,底层代码肯定会成为一场噩梦,因为它太通用了。
2) 错误的资源命名。
GET http://api.example.com/update_customer/12345
这个有名词和动词组合update_customer。通常最好用名词命名API。例如。 customer/account.
这更实用,因为DELETE 可以通过关闭帐户,PUT 来修改帐户的详细信息,其中修改详细信息可以在请求的有效负载中描述。
此外,此处不应使用 HTTP 方法 GET。
一般而言,您不需要在 URL 中使用诸如“更新”、“创建”或“删除”之类的动词,因为预期的操作可以从 HTTP 方法动词派生。
3) 混淆动词
PUT http://api.example.com/customers/12345/update
同样,动词不应包含在URL 中。这很令人困惑,因为您有 PUT http 方法,而动词 update 也在其中。
建议的解决方案
对于您的情况。您有 user 和 request 作为资源。
我认为API可以设计成;
批准请求:
PUT http://api.example.com/user/12345/request
创建新请求:
POST http://api.example.com/user/12345/request
拒绝请求:
DELETE http://api.example.com/user/12345/request
不要删除实际的请求,而是将状态更新为Reject。