Forum: Rails-ES Dudad respondiendo a peticiones XML

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Carlos B. (Guest)
on 2009-06-07 19:44
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?
Manuel González Noriega (Guest)
on 2009-06-08 02:36
(Received via mailing list)
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
Carlos B. (Guest)
on 2009-06-08 16:58
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 :).
This topic is locked and can not be replied to.