Java 什么是RESTAPI和用户角色设计最佳实践?

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语句,…)

我正在开发一个GrailsREST应用程序。我有三个用户角色:BusinessOwner、user、Admin、Public(非身份验证)

我有一些端点,比如
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相比,这将允许轻松更改可用角色。