He visto algunos posts en stackoverflow diciendo:»el envío de la lista de elementos en el Método GET, NO está permitido. Tiene que llevarse a cabo mediante el método POST solo»

Mi código como se muestra en

    [OperationContract]
    [WebGet(UriTemplate = "Employee/{emp}",RequestFormat=WebMessageFormat.Json)]
    Employee GetEmpDetails(string emp);

y mi entrada de objetos json será «{‘id’:1,’nombre’:’prueba’,….}
Hay alguna forma alternativa de lograr este problema.

Gracias

  • ¿qué te hace pensar que voy a obtener una respuesta diferente?
  • También estoy tratando de pasar a C# objeto a mi método Get
InformationsquelleAutor Amarnath | 2011-12-01

3 Comentarios

  1. 3

    Es posible enviar la lista de elementos con GET, es sólo que fuera de la caja sólo valores primitivos son compatibles. Los valores de cadena de funcionar bien, pero si quieres pasar un objeto complejo, que necesita para crear una costumbre QueryStringConverter. El post en http://blogs.msdn.com/b/carlosfigueira/archive/2011/08/09/wcf-extensibility-querystringconverter.aspx explica cómo puede hacerse esto.

    • Gracias por la rápida respuesta, pero pasando unos 10 params a través de la cadena de consulta parece complejo. hay alguna forma alternativa de lograr esto a través de la solicitud GET ?
    • Las solicitudes GET no puede tener un cuerpo, por lo que la única manera de pasar de un parámetro a través de la cadena de consulta. Si vas a pasar muchos parámetros, se debe considerar el cambio a una petición POST en su lugar.
    • Gracias Carlos por fin he cambiado a petición POST y funcionó pero es engañoso para el usuario, incluso aunque el servicio está obteniendo los resultados, pero en el RESTO/help muestra petición POST.Supongo que esta es la limitación de DESCANSO.
  2. 2

    Si usted hace su servicio RESTful que usted será más probable que el uso de HTTP PUT para Agregar método y HTTP POST para el método de Actualización. Es absolutamente bien para pasar de objeto a estos métodos porque objet será parte de la petición HTTP del cuerpo, no forma parte de la URI. URI es importante para las solicitudes HTTP GET. Las solicitudes HTTP GET debe ser sólo para la recuperación de datos no para la modificación de datos.

    • Gracias por la rápida respuesta.En mi solicitud GET no soy la modificación de los datos de envío de los criterios de filtro( por ejemplo: contiene algunos de los 10 parámetros) y acaba de obtener el resultado basado en los criterios de filtro. ¿cómo podemos lograr esto a través de solicitud GET.
    • Usted puede lograr su objetivo mediante Servicestack(servicestack.net) totalmente DTO basado , por favor, mira eso.
    • Rana : ¡Eso es genial! tiene alguna sugerencia sobre cómo hacer esto utilizando Java?
    • lo siento, no sé el uso de java
  3. 1

    Que son la mezcla de HTTP GET/POST/… solicitudes y RESTO GET/POST/PUT/DELETE/…
    Cuando usted quiere pedir algo RESTfully – de hacer una petición GET. En su caso creo que debe verse como

    employee/{id}

    o

    employee/{name}

    Por favor, también tenga en cuenta que el uso de minúsculas en la URI es preferible.
    Si usted necesita OBTENER múltiples criterios, creo que podría parecerse a:

    employee/id/{id}/name/{name}
    • Gracias, ya Hemos visto esta opción, ya que queremos enviar un filtro personalizado que contiene 10-12 parámetros de la url puede parecer muy largo – por ejemplo – empleado/nombre/{nombre}/edad/{edad}/dirección/{dirección}/doj/{fecha de unirse}/fecha de nacimiento/{fecha de nacimiento}……….. etc, nuestra idea era pack esta en un objeto json y deserializar en el servicio, como – {‘nombre’:’sam’,’edad’:’23’…..}.
    • WebGet trabaja con la cadena de consulta de la opción como en la dirección url e.g de arriba, pero no cuando tratamos de enviar un único parámetro de cadena con el json de tipo de contenido. vimos muestras en las que se realiza con el POST/PUT solicitud, pero queremos saber si hay alguna manera de hacerlo por el simple OBTENER
    • Si la cantidad y nombres de los parámetros se desconoce por adelantado, usted puede cambiar el atributo [WebGet(UriTemplate = «empleado»,RequestFormat=WebMessageFormat.Json)] y, a continuación, analizar parámetros URI «manualmente» dentro del método. Pero entonces, por supuesto, usted tendrá que pasar su búsqueda «params» objeto como parámetro URI.
    • Gracias por la rápida respuesta..

Dejar respuesta

Please enter your comment!
Please enter your name here