저는 lo-REST API를 구현 중이며 XML 또는 JSON을 반환하려고합니다. .NET WCF로 빌드하십시오.WCF는 REST에 대해 가변 복합 유형을 랩합니다.
<lfm status="ok">
<user>
<name>RJ</name>
<realname>Richard Jones </realname>
<country>UK</country>
<age>27</age>
</user>
</lfm>
또는
<lfm status="ok">
<track>
<name>Best track ever</name>
<album>Thriller</album>
</user>
</lfm>
또는
<lfm status="fail">
... error details
</lfm>
:
나는 플리커 (Flickr)와 알라 간단한 응답 랩 자신의 변수 복잡한 유형을 마지막 FM API를 모두의 디자인을 좋아한다 복잡한 유형의 직렬화는 예상대로 간단합니다 (DataContract, DataMember 등 사용). 그러나 일종의 커스텀 응답으로 그것을 감싸는 것은 내부에 포함될 수있는 변수 유형이 복잡하기 때문에 저를 감추고 있습니다. 응답을 복합 유형으로 채워진 유형 객체의 구성원에게 제공하면 직렬화되지 않습니다.
[DataContract]
public class Response
{
public enum ResponseStatus
{
ok,
fail
}
[DataMember]
public ResponseStatus Status { get; set; }
[DataMember]
public object Data { get; set; }
}
모든 아이디어 나 도움을 주시면 감사하겠습니다.
많은 감사, 알렉스
편집 : 그것은 멋지게에는 직렬화하지 않더라도 팀 로버츠는 흥미로운 솔루션을 제공합니다. 옵션은 모든 잠재적 복합 유형을 [DataMember (EmitDefaultValue = false)]가 지정된 속성으로 지정하여 null이 직렬화되지 않도록하는 것입니다. 이것이 최선의 해결책인지는 모르겠다.
를, 그것은 [KnownType] 특성을 Data 클래스에 넣는 것이 더 합리적입니다. –
거의 다 왔어. 문제는 그것이 직렬화되는 방법입니다. 결국 대신에 와 같은 노드로 끝납니다. –
Maleks