저는 Student Record System과 Finance System간에 데이터를 통합하는 프로그램을 작성하고 있습니다. SRS는 클라우드 기반 솔루션이며 재무 시스템은 온 프레미엄입니다. 데이터는 RESTful API를 사용하여 SRS에서 추출됩니다. 그런 다음 재무 시스템과의 통합을 위해 반환 된 자원을 준비 데이터베이스에 기록 할 계획입니다. 약간의 연구 끝에 RestSharp를 내 솔루션의 기반으로 사용하기로 결정했습니다.REST 리소스를 일반 객체로 deserializing
Recommended Usage 가이드에 이어 성공적으로 요청을 만들고 솔루션 클래스에 응답 데이터를 deserialize하는 솔루션을 얻을 수있었습니다. 그러나 나는 작은 스피드 범프를 치고 다시 갈 수 있도록 약간의 도움이 필요하다.
SRS Rest API에는 PostalAddressOccupancy 자원이 포함되어 있습니다.
내 문제는 탑승자 속성입니다 : SRS를 API 문서에 따르면 그것은 다음과 같은 구조를 가지고있다. 혼합 된 유형으로 표시되는이 번호는 다른 여러 자원 유형 (예 : 학생, 직원, 보호자 등) 중 하나 일 수 있습니다.
제네릭을 사용하여 데이터 모델에서이를 쉽게 나타낼 수 있습니다. 예 :
public class PostalAddressOccupancy<T>
{
public DateTime EffectiveDate { get; set; }
public DateTime EndDate { get; set; }
public string EntityType { get; set; }
public string Href { get; set; }
public string Id { get; set; }
public bool IsCorrespondenceAddress { get; set; }
public T Occupant { get; set; }
public PostalAddress PostalAddress { get; set; }
public string PostalAddressType { get; set; }
public static PostalAddressOccupancy<T> GetPostalAddressOccupancy(string id)
{
var request = new RestRequest
{
Resource = "PostalAddressOccupancy/{Id}",
RootElement = "postalAddressOccupancy"
};
request.AddParameter("Id", id, ParameterType.UrlSegment);
RestApiClient restApiClient = new RestApiClient("SRS API");
return restApiClient.Execute<PostalAddressOccupancy<T>>(request);
}
public static List<PostalAddressOccupancy<T>> GetPostalAddressOccupancies()
{
List<PostalAddressOccupancy<T>> list = new List<PostalAddressOccupancy<T>>();
var request = new RestRequest
{
Resource = "PostalAddressOccupancy",
RootElement = "postalAddressOccupancies"
};
RestApiClient restApiClient = new RestApiClient("SRS API");
foreach (var pao in restApiClient.Execute<List<PostalAddressOccupancy<T>>>(request))
{
list.Add(GetPostalAddressOccupancy(pao.Href.Split('/').Last()));
}
return list;
}
}
내 문제는 RestSharp가 응답 데이터에서 반환되는 점유자 유형을 올바르게 이해하는 방법입니다. 위의 GetPostalAddressOccupancies 메서드를 사용하면 모든 항목이 올바르게 점유되어있는 상태에서 deserialized 된 개체 목록을 얻습니다. 이것은 키/값 쌍으로 포함 된 속성을 가진 기본 객체 유형으로 반환됩니다.
RestSharp 디시리얼라이저에 대한 힌트를 제공하기 위해 일부 태그가있는 클래스 또는 일반 속성을 꾸밀 필요가 있습니까?
리소스에 기본 속성 (예 : entityType)이 포함되어있는 것으로 나타났습니다. 따라서 이것을 통해 거주자 유형을 식별 할 수 있지만 어떻게 도움이 될지 확신 할 수 없습니다.
'RestApiClient'란 무엇입니까? 그것은 [restsharp] (https://github.com/restsharp/RestSharp/search?utf8=%E2%9C%93&q=RestApiClient&type=)의 일부가 아닌 것 같습니다. – dbc