me di cuenta de que algunas APIs como el uso de la API de Twitter Consigue métodos para todo, por lo que los parámetros se pasan en la url como estaDeberían llamadas a la API sean GET o POST
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=screenname
Tengo algunas preguntas y agradecería los comentarios o correcciones:
Siempre he pensado que usar GET no es una buena idea y que es mejor usar POST.
La API que estoy codificando requiere una clave, y no creo que sea una buena idea enviarla en la URL. Entonces, ¿es posible mezclar los parámetros POST y los parámetros de URL?
Otro problema es que he oído URL tienen una longitud máxima, así que supongo que haría salir del camino, o hay una solución
El único problema que veo con la POST (y lo que estoy adivinando es por qué un sitio como Twitter fue con GET) es que la solicitud no se puede hacer directamente desde el navegador. Corrígeme si me equivoco en esto.
Actualizaciones: Gracias a todos los que me está ayudando a una lluvia de ideas esto. Tengo algunas actualizaciones para aclarar algunos de los comentarios.
Cuando estaba hablando acerca de no querer enviar la clave en la URL, lo que quería decir es que no quiero que la clave bookmarked si un usuario fuera a marcar una llamada, no es que yo no' Quiero que la llave quede expuesta. ¿Entonces, por las respuestas, podría enviarlo en el campo de encabezado? ¿Alguna otra opción?
Quiero aclarar que cuando dicho poste solicita
can't be made from the browser
, que debería haber dicho, como enPOST requests can't be made from the url
http://example.com/api/op.json?param=value
. Lo siento, dije mal, debería haber sido más claro.Re ya sea REST o no: he hecho REST antes, con un framework MVC que se hizo cargo de la detección de los verbos y las direcciones URL terminó pareciéndose a
example.com/entry/1
, oexample.com/entry/
y los verbos HTTP se lo controla siendo la operación realizado (crear, actualizar, eliminar, enumerar). Pensé, en sentido práctico, que RESTful era más útil para los datos parecidos a crud (crear entrada, obtener entrada, actualizar entrada, eliminar entrada, mostrar todas las entradas). Entonces, si no necesito suciedad, ¿necesito REST? Mi pregunta: si una llamada simplemente da entrada y devuelve resultados, ¿esta API debe ser RESTful? La URL no se ve RESTful, ¿hay algo más en la implementación que podría hacer que RESTful?En cuanto al tamaño de la URL, ha comentado
but if you're seriously concerned about it you probably should rethink your API. GET requests shouldn't be sending that much data to the server.
Así que tengo este ejemplo: el usuario desea enviar un archivo grande. En el servidor, no ingresaré el archivo en la base de datos ni lo guardaré (así que de acuerdo con los estándares, no estoy "publicando" datos), pero tal vez lo estoy (estos son ejemplos rápidamente pensados, así que por favor tómelos sin apretar) :- (a) leer los metadatos del archivo y devolverlo (en caso de que sea GET o POST), o
- (b) estoy leyendo los metadatos y la modificación de la metada en el archivo y volver el archivo modificado (debería ser GET o POST).
- Este es un ejemplo de por qué podría necesitar enviar datos de gran tamaño. La pregunta es: (a) y (b) ¿se consideran operaciones GET o POST? y es por eso que estaba preguntando acerca de la longitud de la URL máximo
¿Está OBTENIENDO algunos datos del servidor? Use 'GET'. ¿Estás enviando (o "POSTING") datos al servidor? Use 'POST'. –
También puede pasar la llave en un campo de encabezado. – abraham
@Anon su lógica se interrumpirá cuando se ejecuten ambos o ninguno. –