2015-01-25 2 views
4

Stormpath를 사용하여 Java API를 사용자 저장소로 사용하려고 생각합니다.Stormpath에서 ID 및 customData로 사용자를 검색하는 방법

사용자를 검색 할 수 없다는 점을 제외하면보기에는 좋습니다. 나는이 쿼리를 실행할 때

Exception in thread "main" com.stormpath.sdk.resource.ResourceException: HTTP 400, Stormpath 2105 (http://docs.stormpath.com/errors/2105): Account ID is not a supported query property. 

가 : 전자 메일로 사용자에 대한 검색

HashMap<String, Object> queryParams = Maps.newHashMap(); 
queryParams.put("ID", "4mPXXXXXXXXXX"); 
searchResult = application.getAccounts(queryParams); 

을하지만 작동

예를 들어,이 오류가 발생합니다. customData 속성에 저장 한 로그인 토큰을 사용하여 사용자를 검색하려고 할 때도 같은 오류가 발생합니다.

당신이 질의 할 수있는 유일한 속성이 전자 메일과 사용자 이름 인 것처럼 보이기 때문에 원하는 작업을 수행 할 수 없습니다. 그러나 작동하지 않는다면 왜이 기능을 제공할까요? 내가 뭘 놓치고 있니?

답변

7

공통 관계형 데이터베이스 동작과 REST API의 임피던스 불일치가 있습니다. 관계형 데이터베이스에서 공통적으로 사용되는 ID로 쿼리하면 REST API (또는 대부분의 HTTP 기반 웹 사이트)에 대한 관용적 인 동작이 아닙니다. URL (href)은 웹상의 리소스에 대한 표준 '포인터'입니다. 즉, REST API에서 정규 식별자 은 href 인입니다. href 내부의 모든 토큰 (내부 'id', 특수 문자 등)은 REST 클라이언트에게는 불투명하고 클라이언트는 완전히 무시해야합니다. URL은 HTTP와 REST에서 왕이다.

그렇다면 Stormpath SDK는 RESTful 모범 사례에 충실하려고하므로 href와 href가 나타낼 것으로 예상되는 개체 형식을 허용하는 client.getResource 메서드를 사용하여 모든 Stormpath 리소스를 얻을 수 있습니다. 말했다

String href = "https://api.stormpath.com/v1/accounts/" + id; 
Account account = client.getResource(href, Account.class); 

, 당신은 ID의 개념을 유지하려는 경우, 예를 들어, client.getAccount(String id)을보다 편리하게 클라이언트 API 표현 수 있도록이 원하는 아무 문제가 없습니다. 그렇다면 새 feature request을 열어 주시면 기꺼이 검토해 드리겠습니다.

쿼리 할 수있는 Account 속성의 경우는 documented here입니다. Stormpath는 곧 사용자 정의 데이터에서 데이터를 검색 가능하게 만들 것입니다. Stormpath 기능의 일정은 발표되지 않지만 회사의 엔지니어링 우선 순위가 가장 높으며 조만간 종료되어야합니다.

일부 사용자에게 유용한 한 가지 해결 방법은 검색하려는 데이터를 응용 프로그램에서 사용하지 않는 계정 필드에 저장하는 것입니다. 예를 들어 '중간 이름'입력란을 사용하여 좋아하는 색상을 저장할 수 있습니다. 맞춤 데이터 검색이 가능할 때까지는 일시적입니다. HTH!

+0

안녕하세요, 답변 해 주셔서 감사합니다. :) 당신은 Stormpath에서 개발자입니까? 비슷한 해결 방법을 사용하고 있습니다. 내 UUID를 사용자 이름 필드에 입력하고 로그인 프로세스에서 들어오는 전자 메일로 계정을 검색하고 사용자 이름을 빼고 Stormpath에 대해 인증합니다. 상당히 지저분한 해결 방법과 대기 시간은 600ms ~ 3000ms이지만 작동하지만 괜찮습니다. 하지만 검색 가능한 맞춤 데이터가 기대됩니다. 그것은 kickass 기능입니다! :) – nxrd

+0

도와 줘서 기뻐요! 나는 Stormpath의 CTO 다. 리소스에 'customId'필드를 곧 공개 할 예정이므로 리소스에 대한 고유 한 ID를 지정할 수 있습니다. 귀하의 의견에 감사드립니다! (사이드 노트 : 대답이 용납 될 수 있다면, 대답 해 주시겠습니까? 고마워요!) –

+1

@LesHazlewood 검색 가능한 맞춤 데이터 항목으로 어떤 진전이 있었습니까? 우리가하고있는 것들을 위해 유용 할 것입니다. (중간 이름 필드를 사용하지 않아도됩니다.) ( – James

관련 문제