2009-11-03 2 views
2

기존 WCF 서비스의 경우 휴식을 시도하고 장애물 중 하나가 Uritemplate을 사용하여 복합 유형을 매핑합니다. 예를 들어이인가 .. 아래의 코드REST 사용 가능 WCF 서비스에서 컴플렉스 유형 매핑

[DataContract] 
public class Stock 
{ 
    [DataMember] 
    public string Symbol { get;set; } 
    [DataMember] 
    public double FaceValue { get; set; } 
} 

[ServiceContract] 
public interface IRestService 
{  
    [OperationContract] 
    [WebGet(UriTemplate = "?Symbol={stk.Symbol}")] 
    void Test1(Stock stk); 
} 

선언 확실히 작동하지 않습니다 Uritemplate 위 살펴보고 있지만,이 해당 개체의 특성 중 하나에 입력 쿼리 변수를 매핑의 의도는 무엇이다 가능하니?

사전에 도움을 받으십시오.

+0

사용자 지정 QueryStringConverter http://stackoverflow.com/questions/6783264/passing-a-class-as-parameter-in-restful-wcf-service를 사용하여이 작업을 수행 할 수 있습니다. – Schneider

답변

3

예제는 문제를 설명하지 않습니다. 이 경우 필요한 것은 주식 기호, 간단한 문자열을 전달하는 것이고 복잡한 유형은 필요하지 않습니다.

더 복잡한 데이터 세트, JSON 인코딩 객체를 전달하려는 경우 PUT 또는 POST와 함께 WebInvoke를 사용하고 매개 변수화되지 않은 UriTemplate을 사용하고 양식 데이터를 전달하십시오. 자세한 내용은 this answer을 참조하십시오.

GET을 원하고 작은 매개 변수 집합을 전달할 수있는 경우 적절한 UriTemplate 인 WebGet을 사용하고 수동 매핑을 수행 할 수 있습니다. 같은 : 당신이 개체의 속성에 쿼리 문자열 매개 변수를 매핑 할 경우

public enum OptionFlavor { Put, Call } 
public class OptionInqury { public String Symbol; public String Month; public OptionFlavor Flavor;} 

[OperationContract] 
[WebGet(UriTemplate = "/optionquote/{stockSymbol}/{month}/{flavor}")] 
void GetOptionPrice(string stockSymbol, string month, string flavor) 
{ 
    var x = new OptionInquiry { 
     Symbol = stockSymbol, 
     Month = month, 
     Flavor = (flavor.Equals("put")) ? OptionFlavor.Put : OptionFlavor.Call 
    }; 
    // off you go... 
} 
0

, 당신은 WebInvoke로 이동해야합니다. 불행히도 GET을 사용하면이 작업을 수동으로 수행해야합니다.

관련 문제