Estoy parcialmente en desacuerdo con la sugerencia de Milán de incorporar la representación solicitada en el URI.
Si de todos modos es posible, URIs deben única ser utilizados por los recursos de direccionamiento y no para la construcción de túneles HTTP métodos/verbos. Con el tiempo, la acción específica de negocios (editar, bloqueo, etc.) podría ser embebido en el URI si crear (POST) o actualización (PUT) solos no sirven al propósito:
POST http://shonzilla.com/orders/08/165;edit
En el caso de solicitar un particular, La representación en URI necesitaría interrumpir el diseño de su URI haciéndolo eventualmente más feo, mezclando dos conceptos REST diferentes en el mismo lugar (es decir, URI) y dificultando el procesamiento genérico de solicitudes en el lado del servidor. Lo que Milán está sugiriendo y muchos están haciendo lo mismo, incl. Flickr, es exactamente esto.
En cambio, un enfoque más tranquilo sería usando un lugar separado para codificar la representación preferida utilizando Accept
cabecera HTTP que se utiliza para la negociación de contenidos donde el cliente le dice al servidor qué tipos de contenido que puede manejar/proceso y trata de servidores para cumplir con la solicitud del cliente. Este enfoque es parte de HTTP 1.1 standard, compatible con el software y también es compatible con navegadores web.
Compare esto:
GET /orders/08/165.xml HTTP/1.1
or
GET /orders/08/165&format=xml HTTP/1.1
a esto:
GET /orders/08/165 HTTP/1.1
Accept: application/xml
Desde un navegador web puede solicitar cualquier tipo de contenido mediante el uso de setRequestHeader
método de XMLHttpRequest
objeto. Por ejemplo:
function getOrder(year, yearlyOrderId, contentType) {
var client = new XMLHttpRequest();
client.open("GET", "/order/" + year + "/" + yearlyOrderId);
client.setRequestHeader("Accept", contentType);
client.send(orderDetails);
}
Para resumir: la dirección, es decir, el URI de un recurso debe ser independiente de su representación y XMLHttpRequest.setRequestHeader
método le permite solicitar cualquier representación mediante el encabezado HTTP Accept
.
¡Salud!
Shonzilla
Te escucho. Sería genial codificar algunos encabezados y en la pestaña del navegador simplemente visita las URL para probar tu código. No quiero una interfaz separada en toda regla, como la aplicación Chrome Postman. –
Esta extensión funciona muy bien para mí: https://chrome.google.com/webstore/detail/modify-headers-for-google/innpjfdalfhpcoinfnehdnbkglpmogdi?hl=en-US –