¿Delicioso uso obtiene solicitudes de creación en lugar de publicación, y por qué no debería hacer lo mismo?

StackOverflow https://stackoverflow.com/questions/8802795

  •  25-10-2019
  •  | 
  •  

Pregunta

Estoy mirando el Deliciosa API y vea la siguiente operación para crear un nuevo marcador:

https://api.del.icio.us/v1/posts/add?&url={URL}&description={description}

Parece que están usando una solicitud GET para crear entradas de base de datos del lado del servidor, que he leído en otro lugar no se debe hacer con solicitudes GET, solo con solicitudes de publicación.

Estoy escribiendo mi propia API en este momento y creo que es fabuloso dejar que los usuarios interactúen con la API directamente de la URL. Pero no puede hacer esto a menos que permita las operaciones CRUD sobre Get.

Entonces, ¿delicioso realmente está haciendo operaciones de crud por encima? ¿Hay alguna razón importante por la que no debería hacer lo mismo en mi API, o la publicación solo tiene el mandato de que CRUD evite la invocación accidental?

¿Fue útil?

Solución

La invocación accidental es parte de la misma; Eso es lo que significa la especificación HTTP cuando habla de métodos "ideMpotent". Pero podría argumentar que lo que está haciendo Delicious es realmente idempotente, siempre y cuando la URL solo se agrega una vez que no importa cuántas veces obtenga. Pero lo más importante es que Get es seguro:

The important distinction here is that the user
did not request the side-effects, so therefore
cannot be held accountable for them.

Desde el punto de vista del diseño de la interfaz, desear Los agentes de los usuarios para hacer post y poner y eliminar más difícil que obtener, o al menos claramente diferente, para que los usuarios puedan confiar en esa diferencia para insinuar cuando sus acciones pueden causar un cambio en el estado de recursos, porque ellos son responsable de esos cambios. Uso de hacer cambios, incluso si es ideMpotent, desdibuja esa línea de responsabilidad, especialmente cuando compradores preestablecidos están ampliamente implementados.

Otros consejos

Eso depende si sigue los principios de descanso para cambiar las cosas está prohibido. Por lo tanto, la mayoría de las personas dicen que REST use la publicación para los cambios.

Sin embargo, hay una diferencia entre Get y Post. De acuerdo con las solicitudes de RFC Get, siempre tienen una respuesta de seguimiento. Y si usa la publicación, debe seguir el patrón de redirección después de postar.

Otra limitación es que las URL pueden tener un tamaño limitado. Por lo tanto, Get solo funcionará siempre que sus datos de entrada sean lo suficientemente cortos. Entonces la deliciosa API tiene un error. No podrá agregar todas las URL posibles a través de un parámetro GET.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top