Dudad respondiendo a peticiones XML


#1

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?


#2

2009/6/7 Carlos Belizón removed_email_address@domain.invalid

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) http://en.wikipedia.org/wiki/List_of_HTTP_status_codes


#3

Manuel González Noriega wrote:

2009/6/7 Carlos Belizón removed_email_address@domain.invalid

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) http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

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 :).