Quiero implementar una API REST y la necesidad de un cuerpo sobre mis peticiones GET. (Como se discutió aquí: HTTP GET con cuerpo de solicitud)

Existen http clientes que no son capaces de enviar un cuerpo con una solicitud GET? Fiddler es capaz de hacerlo, aunque el cuadro de mensaje es de color rojo.

InformationsquelleAutor user437899 | 2012-06-18

2 Comentarios

  1. 27

    Como regla general, la idea de un GET en el RESTO es que alguno de sus parámetros se envían en la URL. Como la respuesta a la pregunta que usted incluyó indica, es factible, pero se pierde en el punto de REPOSO, que es tener una constante de webbish de la interfaz. Si desea pasar datos complejos a su extremo, es probable que desee utilizar un POST, que sus usuarios esperan tener un cuerpo. Recomiendo a reconsiderar esa implementación.

    Pero a tu pregunta, seguro que hay clientes que no pueden enviar un cuerpo en un GET. Sobre todo me imagino que tus clientes vayan programático, dicen, python urlib2, y mientras puede conjunto de un cuerpo en LLEGAR, no es realmente la intención de uso del módulo, por lo que está obligando al programador a obtener raro. Lo que es más importante, la idea de la api de REST es ser cliente-agnóstico, que es la razón por la que a mí me parece que su diseño de la API debe ser revisado aquí.

    • Sí, este sería mi segunda opción. Es cierto que el uso de un cuerpo sobre una solicitud GET no es totalmente tranquilo, pero es necesario. Longitud de la dirección URL es limitada y a menudo tiene problemas con datos complejos. Si no existe la posibilidad de OBTENER la voy a utilizar POST, pero los usuarios exspect POST para crear y OBTENER para la recuperación de datos. Sin embargo, no veo otra opción.
    • Veo el punto, pero creo que va a sentir menos mutante a los usuarios a imaginar el POST extremo como un proveedor de servicios que es el procesamiento de sus complejos XML/JSON de datos y de responder con el resultado, que se va a crear un estándar de solicitud GET. POST es frecuentemente utilizado de esta manera, CONSEGUIR que no lo es.
    • ¿Alguien puede apuntar a cualquier web Rfc, etc. que apoyan la afirmación de que «entrar en el REPOSO… los parámetros se envían en la URL?» Yo no lo veo en Roy Fielding tesis doctoral, pero podría estar perdiendo. Prefiero no baso mis decisiones en un MODO de respuesta y compartir este convenio con los demás, convincente, aunque la respuesta puede ser. (+1 por CIERTO)
    • de la HTTP spec: «El método GET significa recuperar cualquier tipo de información (en la forma de una entidad) es identificado por el URI de la Solicitud.» (el énfasis es mío) por Lo que se deduce que los parámetros están en la URI, y no en el cuerpo, ya que «El método POST se utiliza para solicitar que el servidor de origen aceptar la entidad incluido en la solicitud de» –ib
    • Me gustaría saber el significado de client-agnostic en la llanura inglés. He buscado en google y significa client-doubter , Es esto correcto ?
    • En este contexto, el término «cliente» agnósticos » significa «independientemente de que el cliente en particular». Es decir, independientemente de si el RESTO de la api se accede a través de RIZO, una secuencia de comandos de python, Firefox, o cualquier otro cliente capaz de hacer peticiones HTTP.

  2. 9

    Es una mala idea usar el cuerpo en LLEGAR las solicitudes HTTP. Sí, parece ser que «de jure» HTTP GET puede tener cuerpo, pero «de facto» usted va a tener problemas:

    1. Con el cliente marcos/bibliotecas. Será difícil encontrar el apoyo de ella.
    2. Servidor puede simplemente ignorar el cuerpo de la Petición GET. Y de todos modos no es estándar, y podría haber problemas con el servidor o configuración.
    3. Hace el código, especialmente en el lado del servidor, claro a los demás, porque nadie se espera OBTENER con el cuerpo.

    Estás buscando la manera difícil? Con LLEGAR con el cuerpo que tiene tantas trampas. Por qué no usar otro Verbo HTTP?

    Por ejemplo el uso de POST (o algunos otros verbos), que:

    1. es fácil ya han preparado la biblioteca de cliente,
    2. no hay problemas con el servidor o la configuración del servidor,
    3. es claro para otros

    No busque más difícil maneras: a)

    • Se puede justificar «Y de todos modos no es de forma estándar», pls. Lo «estándar» te refieres?
    • Me refiero HTTP normas y RFC de los papeles, por ejemplo, tools.ietf.org/html/rfc2616 . Las solicitudes HTTP GET con el cuerpo no son estándar
    • Así, el HTTP 1.1 parece permitir que el cuerpo del mensaje para OBTENER las solicitudes (por no prohibirlo): A message-body MUST NOT be included in a request if the specification of the request method (section 5.1.1) does not allow sending an entity-body in requests. El OBTENER la especificación de la 5.1.1 no se parece a «no permitir».
    • es un mensaje POST debe devolver complejo-objeto cuerpos?

Dejar respuesta

Please enter your comment!
Please enter your name here