Java 什么是RESTAPI和用户角色设计最佳实践?
我正在开发一个GrailsREST应用程序。我有三个用户角色:BusinessOwner、user、Admin、Public(非身份验证) 我有一些端点,比如Java 什么是RESTAPI和用户角色设计最佳实践?,java,rest,api,grails,Java,Rest,Api,Grails,我正在开发一个GrailsREST应用程序。我有三个用户角色:BusinessOwner、user、Admin、Public(非身份验证) 我有一些端点,比如api/business/1 当具有BusinessOwner角色的用户调用该角色时,它将返回业务的所有详细信息,但如果具有Public(非身份验证)角色的用户调用该角色,它将返回详细信息的子集。 因此,问题是如何实现端点: 1-使用一个端点,如api/business/1,检查用户角色是什么,并返回正确的值(几个if/else语句,…)
api/business/1
当具有BusinessOwner角色的用户调用该角色时,它将返回业务的所有详细信息,但如果具有Public(非身份验证)角色的用户调用该角色,它将返回详细信息的子集。
因此,问题是如何实现端点:
1-使用一个端点,如api/business/1
,检查用户角色是什么,并返回正确的值(几个if/else语句,…)
或
2-具有单独的API区域,如以下所示,其中每个区域都有自己的特定安全性并返回特定子集:
api/admin/business/1
api/businessOwner/business/1
api/public/business/1
哪一个更好?和
设计REST API和应用用户角色的最佳实践是什么?身份验证和授权
我的观点是,URL不应规定或以其他方式基于授权分离web服务。对于格式良好的RESTful服务,应该在HTTP头中发送令牌(就像OAuth 2.0中发生的那样)
大多数成熟的RESTful框架都内置了授权流。据我所知,它们中没有一个为同一服务实现不同的URL作为授权机制选项1。与选项2相比,这将允许轻松更改可用角色。