例如:我们有一个REST API,可为多个使用者提供数据。最常见的情况是:前端(所有人均可访问),管理员/管理人员(仅针对管理员),移动应用。
这些不同之处在于REST API提供的响应数据。例如,在管理请求中,API应该响应用户的电子邮件。在前端不行。或移动应用程序不应接收不必要的数据,这些数据不会显示在视图中。
我的想法是在REST API之前设置适配器,但是如果您没有多个可用域(例如api.xyz.com,api-manage.xyz.com),则此操作将无效。
我认为这是大多数应用程序都需要的一种常见方式。我不想构建多个API来解决这种情况。
在应用程序方面,例如中间件,有什么办法吗?或者我知道有一种基于角色的方法,但是我不认为这是足够抽象的,因为角色不能决定它是哪个设备。
有一个小解决方案: 基于角色的决策可以检索用户的哪些字段。此外,消费者还必须放置标题或诸如“ frontend”,“ admin”,“ mobile”之类的queryparam,以标识将返回哪些数据。这与“用户能够执行的操作”无关。只是为了优化。
还有其他解决方案吗?
答案 0 :(得分:0)
您的API不应该了解您的客户,但应该为客户提供他们想要/需要的可能性。假设您需要显示包含详细信息的产品列表。在台式机上,您可能会带来100种产品,而在移动设备中可能只有10种。因此api需要提供可配置的页面调度。同样,在台式机上,您可能会获得比移动设备上更多的信息。因此,在这里,如果您有实体产品,则在桌面上您将获得所有字段(例如多个属性),而对于移动设备,您将仅获得名称和一个属性(例如价格)以最小化有效负载大小。 因此,API需要通用,但可以让客户根据自己的需求使用它。