2012-04-10 3 views
0

다음 메소드가 있고 filters 매개 변수는 키 값 쌍의 2 차원 배열입니다. 약간의 연구 끝에 Post 메서드가 더 합리적인 것처럼 보입니다. 메서드를 포스트로 다시 작성하는 방법은 무엇입니까? 이 게시물 만들려면복잡한 객체를 매개 변수로 JSON WCF 메서드에 전달

[WebGet(UriTemplate = "/tools/data/getall?tool={tool}&filters={filters}")] 
public JsonArray GetAll(string tool, string filters) 
{ 
} 

답변

1

, 당신은 POSTMethodWebInvokeWebGet을 변경해야합니다. 퀘스트의 본문을 사용하여 변수를 전달하려면 매개 변수 목록에 Serializable 객체를 추가하기 만하면됩니다. 당신이 Dictionary<string,string>이 경우에 따라서, 그 아래에 뭔가 같을 것이다 게시하여 위의 방법을 변경하려면

[WebInvoke(Method = "POST", UriTemplate = "/tools/data/getall?tool={tool}&filters={filters}")] 
public JsonArray GetAll(string tool, string filters, 
         Dictionary<string,string> whatever) 
2

을 할 수 있도록 방법을 변경 :

[WebInvoke(UriTemplate = "/tools/data/SearchAll")] 
public JsonArray SearchAll(string tool, Dictionary<int,string> filters) 
{ 
} 

위의 방법에 대한 귀하의 requestBody은 수도 로 (당신은 피들러를 사용하여 검사 할 수 있습니다) 아래와 같이 보일 :

{ 
"tool": "enter the value of tool parameter", 
"filters" : 
{ 
    {"Key":1,"Value":"Test"}, 
    {"Key":2,"Value":"Test1"} 
} 
} 

참고 :

  1. 키, 값 쌍을 가정하면 INT 될,

  2. 당신이 POST 메소드가 문자열

    는 쿼리 문자열은 지원되지 않습니다.

  3. 또한 메서드 이름이 작업을 수행하는 서버의 리소스를 나타내는 REST 보안 주체별로 유효하게 만드는 메서드의 이름을 바꿉니다. WebInvoke 특성을 사용하는 GetAll 메서드는 좋은 방법이 아닙니다.

  4. WebInvoke의 기본 방법은 "POST"이므로 명시 적으로 지정하지 않습니다. 이것에 대한

+0

덕분에 내가 어떻게 당신이 JQuery와에서 서비스를 호출 도움이 될 몇 가지 링크를 찾아주세요 jQuery를 – Burt

+1

에서 호출 가겠어요 : http://www.codeproject.com/Articles/128478/Consuming-WCF -REST-Services-jQuery-AJAX-Call 사용 및 http://blogs.msdn.com/b/brunoterkaly/archive/2011/11/17/how-to-consume-restful-services-using-jquery-and - 또는 - javascript.aspx – Rajesh

관련 문제