2017-09-15 3 views
1

인증 절차 후에 RESTful 객체를로드하는 가장 좋은 방법을 알고 싶습니다.인증 후 RESTful 객체로드하기

예를 들어 로그인 한 후 인물, 장소 및 기타 계정 관련 정보의 목록을 검색해야하는 앱이 있습니다. 다음 중 베스트 프랙티스는 무엇입니까?

. 응용 프로그램이 호출 후 POST/API/V1/로그인은 반환해야합니다 :

{ 
    "token": "xxxxx.yyyyyyy.xzzzzzzzzz", 
    "persons": [ 
     {"id": 1, "name": "John"}, 
     {"id": 2, "name": "Paul"}, 
     {"id": 3, "name": "George"}, 
     {"id": 3, "name": "Ringo"} 
    ], 
    "places": [ 
     {"id": 1, "name": "London"}, 
     {"id": 2, "name": "New York"}, 
    ], 
    "lastLogin": "2017-09-10 13:00:00" 
} 

이 방법은 응용 프로그램 개발자에 쉽게하기 위해 표시가 별도로 얻을 통화를 할 필요가 없기 때문에. 그러나 그것은 밀접하게 결합 된 것처럼 보입니다.

b. 아니면 단지

{ 
    "token": "xxxxx.yyyyyyy.xzzzzzzzzz" 
} 

을 반환해야하고, 응용 프로그램은 예를 들어, 사용 별도로 다른 데이터를로드한다

GET /api/v1/persons 
GET /api/v1/places 
GET /api/v1/lastlogin 

이 방법은 깨끗한 것 같다,하지만 앱 개발자를위한 어렵게 할 수있다. 특히 많은 다른 모델을로드하는 경우 요청 오버 헤드가 추가 될 수 있습니다.

c. 또는 데이터가있는 토큰을 반환하는 /api/v1/loginWithData이라는 호출이 있어야하고 별도의 토큰을 반환하는 /api/v1/login이라는 별도의 호출을 사용해야합니까? 이 방법은 두 가지 모두에서 최상이지만 API 네임 스페이스가 복잡해 보입니다.

설명 할 수있는 링크를 보내 주시면 감사하겠습니다. 배울 수 있습니다.

답변

1

타사 앱에 대해 이야기하는 경우 사용자 자격 증명 및 인증 토큰을 사용해서는 안됩니다. 그들은 단지 사용자로부터 액세스 키를받습니다. 사용자에게 몇 가지 특권을 주거나 제한된 API로 액세스 할 때마다 모든 단일 요청이 사용자에 의해 서명됩니다. 세션과 무국적 토큰이 아니라면 OAuth와 Fielding 논문을 확인하여 기본 사항을 알아야합니다.

실제 클라이언트를 개발하여 타사 앱이 아닌 경우 토큰은 인증 헤더 또는 본문 대신 쿠키로 이동해야합니다. 귀하의 데이터 소스에 대한 GET /api/v1/user/136 링크를 제공하는 POST /api/v1/auth 링크를 사용합니다. 또는 사용자 지정 MIME 형식을 사용하는 경우 빈 본문을 반환합니다.

+0

나는 당신에게도 동의하는 경향이있다. 그러나 그 일반적인 관행은 단순한 것입니까? –

+0

@aljof 어느 부분입니까? – inf3rno

+0

언급 한 위치 : "GET/api/v1/user/136을 제공하는 POST/api/v1/auth 링크를 사용합니다." 내가 뭘 묻는 지 이유는 POST의 응답을 내 애플 리케이션이 사용하는 데이터를 포함하지만 대신에 다른 요청을 사용하여 응용 프로그램을 가지고 데이터를 얻을 필요가 없다는 것입니다? –