Я заметил, что некоторые API, такие как twitter API, используют методы get для всего, поэтому параметры передаются в URL-адресе, подобном этому
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=screenname
У меня есть некоторые вопросы и я буду благодарен за комментарии или исправления:
-
Я всегда думал, что использование GET - не очень хорошая идея и что лучше использовать POST.
-
API, который я кодирую, требует ключа, и я не думаю, что это хорошая идея отправить его в URL. Так можно ли смешивать оба параметра POST и параметры URL?
-
Другая проблема заключается в том, что я слышал, что URL-адреса имеют максимальную длину, поэтому я предполагаю, что это сделает GET в стороне, или существует обходное решение
-
Единственная проблема, с которой я столкнулся с POST (и, насколько я понимаю, почему сайт, подобный twitter, пошел с GET), заключается в том, что запрос не может быть сделан непосредственно из браузера. Поправьте меня, если я ошибаюсь.
Обновления: Спасибо всем, кто помогает мне провести мозговой штурм. У меня есть некоторые обновления, чтобы прояснить некоторые комментарии.
-
Когда я говорил о том, что вы не хотите отправлять ключ в URL-адрес, я имел в виду, что я не хочу, чтобы ключ был помечен, если пользователь должен был закладок вызова, а не того, что я не хочу ключ открыт вообще. Поэтому, я думаю, из ответов, я мог бы отправить его в поле заголовка? Любые другие варианты?
-
Я хочу уточнить, что, когда я сказал POST-запросы
can't be made from the browser
, я должен был сказать,POST requests can't be made from the url
, как вhttp://example.com/api/op.json?param=value
. Извините, я оговорился, должен был быть более ясным. -
Повторите ли это RESTful или нет: я уже делал RESTful с помощью структуры MVC, которая позаботилась об обнаружении глаголов, а URL-адреса выглядели как
example.com/entry/1
илиexample.com/entry/
, а http-глаголы что контролирует выполняемую операцию (создание, обновление, удаление, список). В практическом смысле я подумал, что RESTful был наиболее полезен для похожих данных (создать запись, получить запись, обновить запись, удалить запись, показать все записи). Так что, если мне не нужна грудь, мне нужен ОТДЫХ? Мой вопрос: если вызов просто дает ввод и возвращает вывод, должен ли этот API быть RESTful? URL-адрес не выглядит RESTful, так есть ли что-то еще в реализации, которое могло бы сделать его RESTful? -
Что касается размера URL-адреса, вы прокомментировали
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.
Итак, у меня есть этот пример: пользователь хочет отправить большой файл. На сервере я не буду вводить файл в базу данных или сохранять его (поэтому в соответствии со стандартами я не "отправляю" данные), но, может быть, я (это быстро продуманные примеры, поэтому, пожалуйста, возьмите их свободно):- (a) чтение метаданных файла и возвращение его (должно быть GET или POST) или
- (б) Я читаю метаданные и изменяю метада в файле и возвращаю измененный файл (должен быть GET или POST).
- Итак, это пример того, почему мне может понадобиться отправлять большие данные. Вопрос в том, являются ли (а) и (б) рассмотрены операции GET или POST? и именно поэтому я спрашивал о максимальной длине URL