Programing

UriTemplate을 사용하여 비 문자열을 WCF RESTful 서비스에 전달할 수 있습니까?

lottogame 2020. 11. 1. 17:15
반응형

UriTemplate을 사용하여 비 문자열을 WCF RESTful 서비스에 전달할 수 있습니까?


다음을 할 수 있습니까?

[OperationContract]
[WebGet(UriTemplate = "/foo/{id}")]
string GetFoo(int id);

내 서비스가 RESTful 서비스와 RPC 스타일 SOAP 서비스로 작동하기를 원합니다. 가능하면 int를 int로 유지하고 수동으로 구문 분석하지 않고 싶습니다.


올바르게 기억하면 WebGet 또는 WebInvoke를 사용할 때 경로의 UriTemplate 변수가 항상 문자열로 확인됩니다. UriTemplate의 쿼리 부분에있는 경우에만 UriTemplate 변수를 int, long 등에 바인딩 할 수 있습니다.


dthrasher가 언급했듯이 ID를 URI의 쿼리 부분으로 이동하십시오. 이것은 나를 위해 일했습니다.

[OperationContract]
[WebGet(UriTemplate = "/foo?id={id}")]
string GetFoo(int id);

URI의 다른 부분에 대한 자세한 내용은 wikipedia의 "URI 체계"를 참조하십시오. http://en.wikipedia.org/wiki/URI_scheme


다른 사람들이 언급했듯이 문자열이 아닌 매개 변수를 전달하려면 쿼리 문자열을 사용해야합니다. 다음 문서에서는 구문 분석이 수행되는 방법을 자세히 설명합니다.

WCF 확장 성 – QueryStringConverter

"적절한"WCF 확장 성으로 돌아가서 이번 주 게시물은 QueryStringConverter에 대한 것입니다. 목적이 매우 구체적이기 때문에 실제로 다루어야 할 간단한 주제입니다 (다양한 경우에 사용될 수있는 이전에 본 다른 확장 성 지점과 달리). WCF 내 에서 QueryStringConverter는 WebHttpBehavior가 적용된 끝점에서만 사용됩니다. 그들에게. 이 경우에도 쿼리 문자열을 통해 전달 된 매개 변수가있는 작업 ([WebGet]으로 표시된 매개 변수가있는 작업 또는 쿼리 문자열에 일부 매개 변수를 명시 적으로 바인딩하는 UriTemplate가있는 [WebInvoke] 작업 )에만 해당됩니다 . QueryStringConverter는 작업 매개 변수와 쿼리 문자열의 표현간에 변환 할 수있는 부분입니다.

...

WebHttpBehavior에서 사용하는 기본 QueryStringConverter는 기본적으로 모든 간단한 숫자 유형 (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal), Boolean, Char, Object, String, DateTime을 포함하여 여러 유형을 지원합니다. , DateTimeOffset, TimeSpan, Guid, Uri 및 Byte 배열 (본질적으로 DataContractSerializer가 XmlQualifiedName을 제외하고 "기본"으로 간주하는 모든 유형). 열거 형도 기본적으로 지원됩니다 (열거 형 값의 문자열 표현이 사용됨). 마지막으로, 기본 QueryStringConverter에서 지원하는 다른 유형 세트도 있습니다. 유형을 문자열로 또는 문자열로 변환 할 수있는 유형 변환기를 사용하여 [TypeConverter] 속성을 선언하는 유형입니다 (아래에서 자세히 설명).


불행히도 .NET Framework를 사용하려면 직접 구문 분석을 수행해야합니다 UriTemplate.

참고 URL : https://stackoverflow.com/questions/545988/can-i-pass-non-string-to-wcf-restful-service-using-uritemplate

반응형