我正在开发一个小节点/角度应用程序
superadmin应该能够在直接从节点应用程序传递的视图中创建/编辑/删除新的客户帐户。
另一方面,客户端通过Angular和节点应用程序提供的REST API与后端/数据库进行通信。客户需要用户名/密码才能登录其帐户。
问题:我有这个路由图,我认为:客户端需要在REST API的URL中,所以后端知道要获取哪些数据? / p>
:在url中表示它是变量...
Route map Superadmin
/admin/client – POST
/admin/client/:id – GET
/admin/client/:id – PUT
/admin/client/:id – DELETE
/admin/clients – GET
Route map API JSON
/v1/:client/candidate – POST
/v1/:client/candidate/:id – GET
/v1/:client/candidate/:id – PUT
/v1/:client/candidate/:id – DELETE
/v1/:client/candidates – GET
/v1/:client/settings – GET
/v1/:client/settings – PUT
答案 0 :(得分:4)
我认为这有点难以回答,因为它会说一种方式是"对"而另一个是错误的",当真的可以有多种方法来解决这个问题。以下是关于如何构建API端点的说法。
如果我们专注于这些API端点:
/v1/:client/candidate – POST
/v1/:client/candidate/:id – GET
/v1/:client/candidate/:id – PUT
/v1/:client/candidate/:id – DELETE
/v1/:client/candidates – GET
/v1/:client/settings – GET
/v1/:client/settings – PUT
这里我们有一组API,允许某人查找并对特定client
的资源执行操作。在执行此操作时,您实际上已打开此功能,以允许任何人访问任何人的数据(直到您添加安全性)。像这样构建API对于" superadmin"更有用。就像您在问题中描述的那样,需要在一天中访问多个客户端配置文件。但正如您可能想象的那样,您需要将对这些端点的访问权限仅限于那些拥有" superadmin"访问OR实际上是客户端本身。
如果这些API端点的主要用例是为客户端提供服务,我会删除:client
参数:
/v1/candidate – POST
/v1/candidate/:id – GET
/v1/candidate/:id – PUT
/v1/candidate/:id – DELETE
/v1/candidates – GET
/v1/settings – GET
/v1/settings – PUT
由于您提到客户端需要登录才能访问这些API,因此您已经知道客户端在发出请求时是谁。您可以从请求中查找客户端,并根据拨打电话的人访问这些资源。就个人而言,我认为这会使事情变得更容易理解,因为请求总是要求我的数据,而不是某些客户的""数据,然后您需要验证他们是否有权访问。
但同样,这一切都取决于您如何构建应用程序,用例是什么,谁将访问系统等等。分离出" superadmin&#可能是有意义的。 34;来自普通"客户端的API"像我上面描述的API,或者将它们保持在一起可能更好。从长远来看,答案可能最终会更容易理解和维护。