Si entiendo correctamente, en el estilo de reposo, cada consulta (es decir, cada acción en cada recurso que no modifica el estado del recurso) debe codificarse en la cadena de consulta, utilizando un método get, sin cuerpo en absoluto.¿Cómo pasar consultas complejas en REST?
¿Estoy en lo cierto?
Bueno, tengo varias aplicaciones que se comunican con el DB a través de un mensaje XML que es manejado por un componente de Visual Basic 6.
el mensaje para una consulta es algo como esto
<xml>
<service>account</service>
<resource>invoice</resource>
<action>query</action>
<parameters>
<page>1</page>
<page_len>10</page_len>
<order>date</order>
<fields>*</fields>
<conditions>
<date>2009-01-01..2009-01-31</date>
<customer_id>24</customer_id>
</conditions>
</parameters>
</xml>
En este momento estamos en el proceso de rediseño de nuestros mensajes XML, y nos gustaría hacer eso de una manera tal que puedan ser fácilmente mapeado a una interfaz RESTful.
En el ejemplo anterior, necesitamos las etiquetas de "condiciones" para evitar colisiones entre los parámetros y las condiciones (es decir, qué sucede si tengo un campo llamado "orden", "página" o algo así. ..
Pensamos sobre el envío de los parámetros con un prefijo, algo así como
http://account/invoice/?_page=1&_page_len=10&_order=date&_fields=*&date=2009-01-01..2009-01-31&customer_id=24
y el XML sería algo así como
[...]
<_order>date</_order>
<_fields>*</_fields>
<date>2009-01-01..2009-01-31</date>
<customer_id>24</customer_id>
[...]
Nosotros están tratando de definir un formato XML realmente simple para operaciones crud, y que el XML resultante podría ser fácilmente mapeado a reposo o JSON.
¿Cómo asignaría ese tipo de consulta en una aplicación de descanso? ¿Hay algún estándar definido? o alguna página con muestras crud rest/XML/JSON? ¿Qué hay de devolver el error, o datasets anidados?
Muchas gracias.
Entiendo su enfoque, pero me gustaría hacer cómo se haría siguiendo los principios de descanso, no solo rellenar mi propio xml en la queryString ... – opensas
Depende de si, como se mencionó, puede reconsiderar cómo debería estar enviando datos, pero si solo está enviando datos para ponerlos en la base de datos, entonces tiene sentido codificarlos para que puedan enviarse en una URL. Si está utilizando GET, tendrá un enfoque diferente. –