2014-04-30 2 views
1

나는 랠리의 REST API (.NET) 나는 다음과 같은 필드를 제외한 모든 사용자 값을 얻을 수 있어요 쿼리 할 때 : Rally REST API를 사용하여 특정 사용자 필드를 검색하는 방법은 무엇입니까?

  • LastLoginDate

    1. 역할
    2. CostCenter을
    3. 사무실 위치
    4. c_RoleType
    5. 작성일

    브라우저에서 URL "https://rally1.rallydev.com/slm/webservice/v2.0/user/xxxxxxxxxx"을 실행하면 위의 모든 필드에 액세스 할 수 있습니다.

    그러나 REST API를 사용하면 결과 집합에 위의 필드가 포함되지 않습니다.

    내가 다르게해야 할 것인지 확실하지 않습니다.

    request = new Request("user"); 
    request.Fetch = fetchList; 
    request.Workspace = RallyInterface.workspaceRef; 
    QueryResult queryResult = restApi.Query(request); 
    

    추신. 위의 예에서 Fetch 문자열은 비어 있으며 모든 가능한 사용자 필드를 가져 오는 것이 목표입니다. 내가 디버깅 할 때 나는 단지 다음 18 개 필드

    또한
    [0] "_rallyAPIMajor" string 
        [1] "_rallyAPIMinor" string 
        [2] "_ref" string 
        [3] "_refObjectUUID" string 
        [4] "_objectVersion" string 
        [5] "_refObjectName" string 
        [6] "ObjectID" string 
        [7] "Department" string 
        [8] "Disabled" string 
        [9] "DisplayName" string 
        [10] "EmailAddress" string 
        [11] "FirstName" string 
        [12] "LastName" string 
        [13] "MiddleName" string 
        [14] "Phone" string 
        [15] "Role" string 
        [16] "UserName" string 
        [17] "_type" string 
    

    , 내가 GetByReference()를 사용할 때, 내가 아니라 다음 필드에 대해 "역할"에 대한 값을 얻을 수 있어요 얻을 수 있어요 :

    1. CostCenter
    2. LastLoginDate
    3. 사무실 위치
    4. c_RoleType
    5. 에서 CreationDate

    GetByReference() 응답은 필드를 찾을 수없는 메시지와 함께 반환합니다.

  • +1

    fetchList에서 가져온 필드는 무엇입니까? – user2555322

    +0

    비어있는 가져 오기 목록이 있습니다. 나는 모든 들판을 가져왔다. 그러나, 내가 당신의 코드와 다르게하고있는 것은 사용자 이름/이메일로 쿼리를 필터링하는 것이 아닙니다. 디버깅 할 때 다음 목록을 응답으로받습니다. – KG1

    답변

    0

    fetchList은 해당 필드를 포함하거나 완전히 생략해야합니다. 아래 코드 예제는 두 경우 모두 해당 필드를 반환합니다. 아래 코드에서 userRequest.Fetch을 주석 처리하면 해당 필드가 여전히 반환됩니다. 가져 오기가 있지만 해당 필드를 포함하지 않으면 가져 오지 않습니다. 여기

      userRequest.Fetch = new List<string>() 
           { 
            "Role", 
            "CostCenter", 
            "LastLoginDate", 
            "OfficeLocation", 
            "CreationDate" 
           }; 
    
          userRequest.Query = new Query("UserName", Query.Operator.Equals, "[email protected]"); 
    
          QueryResult userResults = restApi.Query(userRequest); 
    
          foreach (var u in userResults.Results) 
          { 
           Console.WriteLine("Role: " + u["Role"] + " CostCenter: " + u["CostCenter"] + " LastLoginDate: " + u["LastLoginDate"] + " OfficeLocation: " + u["OfficeLocation"] + " CreationDate: " + u["CreationDate"]); 
          } 
    

    GetByReference를 사용하는 경우이 코드의 또 다른 변형 :

    userRequest.Query = new Query("UserName", Query.Operator.Equals, "[email protected]"); 
    
         QueryResult userResults = restApi.Query(userRequest); 
         String userRef = userResults.Results.First()._ref; 
         DynamicJsonObject user = restApi.GetByReference(userRef, "Name", "Role", "CostCenter", "LastLoginDate", "OfficeLocation", "CreationDate"); 
         String role = user["Role"]; 
         String costCenter = user["CostCenter"]; 
         String lastLoginDate = user["LastLoginDate"]; 
         String officeLocation = user["OfficeLocation"]; 
         String creationDate = user["CreationDate"]; 
    
         Console.WriteLine("Role: " + role + " CostCenter: " + costCenter + " LastLoginDate: " + lastLoginDate + " OfficeLocation: " + officeLocation + " CreationDate: " + creationDate); 
    

    전체 코드는 this github repo에서 사용할 수 있습니다.

    +0

    빈 페치 목록이 있습니다. 나는 모든 들판을 가져왔다. 그러나, 내가 당신의 코드와 다르게하고있는 것은 사용자 이름/이메일로 쿼리를 필터링하는 것이 아닙니다. 디버깅 할 때 응답으로 다음 목록을 얻습니다. – KG1

    +0

    응답에서 반환되는 필드에 대한 자세한 내용은 내 추가 정보를 참조하십시오.사전에 도와 주셔서 감사합니다 – KG1

    +0

    언급 한 "필드를 찾을 수 없음"메시지의 정확한 표현은 무엇입니까? "처리되지 않은 예외 : System.Collections.Generic.KeyNotFoundException : 주어진 키가 사전에 없습니다." ? 이 코드를 실행하는 권한은 무엇입니까? 작업 공간 관리자? 편집장? – nickm

    관련 문제