2012-04-10 2 views
0

У меня есть следующий метод, а параметр filters - это 2d-массив пар значений ключа. После небольшого исследования метод Post, похоже, имеет больше смысла, как бы я переписал метод для публикации?Передача сложного объекта в качестве параметра для метода JSON WCF

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

ответ

1

Чтобы сделать это сообщение, вам необходимо изменить WebGet к WebInvoke с Method из POST. Чтобы использовать тело квеста для передачи переменных, вам просто нужно добавить объект 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 для указанного выше метода может выглядеть, как показано ниже (вы можете проверить с помощью Fiddler):

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

Примечание:

  1. Если предположить, что ключ, значение пары быть INT, строка

  2. Когда у вас есть метод POST, строки запроса не поддерживается.

  3. Также переименуйте свой метод, который делает его действительным в соответствии с принципами REST, где имена методов указывают ресурс на сервере, который выполняет задачу. Метод GetAll с атрибутом WebInvoke не является хорошей практикой.

  4. Метод по умолчанию для WebInvoke - «POST», поэтому я не указываю его явно.

+0

Спасибо за это, как бы я идти о вызове его из JQuery – Burt

+1

Вы можете найти некоторые ссылки, которые могут помочь вам вызвать службу из JQuery: http://www.codeproject.com/Articles/128478/Consuming-WCF -REST-Services-Using-jQuery-AJAX-Call и http://blogs.msdn.com/b/brunoterkaly/archive/2011/11/17/how-to-consume-restful-services-using-jquery-and -или-javascript.aspx – Rajesh

Смежные вопросы