2016-09-24 5 views
0

REST API를 만들려는 일반적인 사용자 관리 모듈이 있습니다. 사용자는 자신의 세부 정보에 액세스 할 수 있어야하지만 다른 사용자 세부 정보에 액세스 할 수 없어야합니다. 관리자 사용자는 모든 사용자를 가져 오거나 모든 사용자를 제거 할 수 있어야합니다.사용자 관리를 위해 REST 끝점을 정의하는 올바른 방법

이것은 URL 끝점, 제안 사항을 만드는 방법입니다.

# To create/register user 
POST /api/users/ 
# or 
POST /api/register/ 

# To get all users 
# This will be allowed to access only by admins. 
GET /api/users/ 

# To get current user. 
# For admin, allowed 
# For regular user, id will be validated against userid stored in the session. 
GET /api/users/<id>/ 

# To update current user. 
# This id will be validated against userid stored in the session. 
PUT /api/users/<id>/ 

# To delete current user. 
# For admin, allowed 
# This id will be validated against userid stored in the session. 
DELETE /api/users/<id>/ 

# Login 
POST /api/login/ 

# Logout 
GET /api/logout/ 

+0

HATEOAS 제약 조건을 이해하십시오. https://en.wikipedia.org/wiki/HATEOAS REST는 엔드 포인트를 디자인하는 것이 아니라 클라이언트가 따라 할 수있는 하이퍼 링크를 디자인하는 것입니다. REST를 사용하면 클라이언트를 엔드 포인트 구조에서 분리하여 클라이언트를 중단시키지 않고 언제든지 예를 들어 URI를 변경할 수 있습니다 ... 클라이언트는 링크 관계를 사용하여 하이퍼 링크로 수행 할 작업을 결정합니다. https://en.wikipedia.org/wiki/Link_relation dpkg는 statelessness 제약 조건에 대해 옳았습니다. REST API에 로그인/로그 아웃이 있어서는 안됩니다. – inf3rno

+0

궁극적으로 이것은 REST 또는 HATEOS 질문이 아닙니다. 인증 및 권한 부여에 대한 질문입니다. – HeadCode

답변

2

.. 유일한 것은 컨텍스트 (URL 경로에서) 사용자에-통과하지 현재의 것입니다 사용자.

# To create 
POST /api/users 

# To get all users 
GET /api/users 

# To get particular user. 
GET /api/users/<id> 

# To update particular user. 
PUT /api/users/<id> 

# To delete particular user 
DELETE /api/users/<id> 
+0

제안 해 주셔서 감사합니다 :) –

+0

그냥 까다 롭지 만 PUT이 REST의 업데이트라는 생각을 결코 좋아하지 않았습니다. 이것은 생성 또는 대체 또는 오히려 'SET'입니다. 업데이트라고 부를 수 있지만 완전한 업데이트입니다. 만약 당신이 그것의 일부를 설정한다면, 그것은 정말로 패치입니다. – Sinaesthetic

2

일반적인 권장 사항이 REST API는 상태 비 저장하게 될 것입니다 감사합니다 - 즉, 대신에 API 세션에서 사용자 ID를 유지의, 호출자가에 (정식 헤더) 식별을 보내는 경우 API 요청. 그런 다음 api는 헤더에서 사용자를 검색하고 핵심 작업 (어떤 종류의 인터셉터를 사용하기 전에)을 수행하기 전에 해당 사용자에게 충분한 권한이 있는지 확인합니다. 자세한 내용은

확인이 - 당신이 꽤 좋은 엔드 포인트 방식을 가지고 생각 https://stackoverflow.com/a/20311981/1384048

+0

흠 ... 끝 지점에 대한 제안 사항이 있습니까? –