Veamos, tengo algunas dudas (de concepto más que nada) a la hora de
diseñar mi aplicación, pensé en que también fuera un servicio web
(mediante el uso de respond_to), pues bien, para peticiones GET que son
tÃpicos listados pues me era muy fácil diseñar como serÃan las
respuestas, por ejemplo:
respond_to do |format|
format.xml { render :xml => [starters, suppliers]}
end
Mi problema es, ¿Qué deberÃa de responder en caso que por ejemplo el
usuario no tenga privilegios para acceder a ese recurso? Claro, en el
caso de que la petición fuese html hacÃa lo siguiente:
respond_to do |format|
flash[:error] = “No tienes permisos”
format.html {redirect_to ‘ruta’}
end
¿Pero qué deberÃa responder para xml?
2009/6/7 Carlos Belizón [email protected]
respond_to do |format|
flash[:error] = “No tienes permisos”
format.html {redirect_to ‘ruta’}
end
Pues lo mismo, pero en XML. No cambia mucho, al fin y al cabo, si estás
utilizando por ejemplo XHTML y es correcto, ya estás respondiendo con
XML.
Para que el servicio web merezca ese nombre, es mucho más importante que
te
asegures de que devuelves los códigos HTTP apropiados (1), ampliando
información en el cuerpo de la respuesta de ser necesario. En el ejemplo
que
pones, por ejemplo, un código 401. Después, lo que aparezca en el cuerpo
de
la respuesta ya depende de qué sintáxis XML quieras utilizar: XHTML,
Atom,
de creación propia…
(1) List of HTTP status codes - Wikipedia
Manuel González Noriega wrote:
2009/6/7 Carlos Belizón [email protected]
respond_to do |format|
flash[:error] = “No tienes permisos”
format.html {redirect_to ‘ruta’}
end
Pues lo mismo, pero en XML. No cambia mucho, al fin y al cabo, si estás
utilizando por ejemplo XHTML y es correcto, ya estás respondiendo con
XML.
Para que el servicio web merezca ese nombre, es mucho más importante que
te
asegures de que devuelves los códigos HTTP apropiados (1), ampliando
información en el cuerpo de la respuesta de ser necesario. En el ejemplo
que
pones, por ejemplo, un código 401. Después, lo que aparezca en el cuerpo
de
la respuesta ya depende de qué sintáxis XML quieras utilizar: XHTML,
Atom,
de creación propia…
(1) List of HTTP status codes - Wikipedia
Muchas gracias, ahà es dónde estaba dudando, en qué responder, porque
claro,cuando haces una acción que modifique el estado del servidor, por
ejemplo añadir una nueva instancia se suele contestar head :ok, y claro,
lo veÃa la mar de lógico.
Me miraré la API de rails para saber cómo hacer las respuestas de forma
correcta. Muchas gracias :).