Назад | Перейти на главную страницу

Вопросы по REST и серверной логике

Хорошо, во-первых, я опытный серверный нуб. Так что прошу прощения, если я расстроил вас своим невежеством.

В настоящее время я установил линод и установил его с MySQL и apache. Прямо сейчас я пытаюсь узнать, как использовать REST для связи из моего приложения iphone с сервером.

Я хочу, чтобы приложение отправляло серверу набор координат, а сервер выполнял поиск по своим данным и возвращал список других ближайших координат. Я также хочу общаться с минимальным использованием полосы пропускания.

Я слышал, что GET - хороший способ сделать это, но я также слышал, что информацию (например, координаты) можно легко прочитать из внешних источников. Безопасность - это проблема, и я хочу, чтобы вся информация, отправляемая или полученная с сервера, была конфиденциальной. Следует ли мне использовать POST для этого? Есть ли способ лучше? Могу ли я отправить запрос в формате JSON (для меньшего использования полосы пропускания)?

Также REST - хороший способ сделать это? Многие учебные пособия, которые я вижу, похоже, просто получают или управляют таблицами данных, и за кулисами не так много серверной логики. SOAP или что-то еще лучше?

Я действительно не понимаю многое из этого на данный момент, и мой google-fu дает мне медленные результаты, поэтому любая информация будет очень полезна.

Ни GET, ни POST не являются безопасными через HTTP, если безопасность важна, вам, вероятно, следует изучить возможность получения сертификата SSL, даже самоподписанный, подойдет - если вы сообщите своему `` клиенту '' (я предполагаю, что это какой-то телефон / планшет ?) доверять сертификату.

REST, вероятно, хороший способ решить эту проблему, потому что он дает вам хороший простой стандарт. На данный момент у вас может быть только одна конечная точка, но если вы создадите REST, вы можете легко добавить больше по мере роста вашего приложения. REST - это стандарт, а не протокол. Это означает, что REST API должны соответствовать этим стандартам;

  • Получение данных с сервера должно производиться с помощью GET. GET никогда не должен изменять ресурс.
  • Изменение (создание, обновление) ресурсов на сервере должно производиться с помощью POST.
  • Все конечные точки / методы должны иметь свой собственный URL (например, api.example.com/get_something, а не api.example.com/api?method=get_something)
  • Ответы должны возвращаться в зависимости от типа файла (таким образом, get_something.xml должен возвращать xml, get_something.json должен возвращать JSON и т. Д., Вам не обязательно поддерживать все форматы, но те, которые вы делаете, должны быть доступны для запросов по типу файла).

Обратите внимание, что как GET, так и POST могут предоставить дополнительные параметры приложению на сервере, но в случае GET это обычно просто используется для фильтрации запроса, а с помощью POST он может предоставить подробную информацию об изменении, которое будет записано.

Что касается проблемы с JSON, обычно JSON будет использовать большую пропускную способность (только крошечный бит), но с ним намного проще работать.

Например, вот версия возможного ответа API в виде обычного текста;

-25.90962,161.08639
-4.11525,-91.31969
-13.76025,147.22927

Но вот ответ с JSON

{
    coordinates:[
        {
            lat: -25.90962,
            long: 161.08639
        }
        {
            lat: -4.11525,
            long: -91.31.969
        }
        {
            lat: -13.76025,
            long: 147.22927
        }
    ]
}

У JSON есть пример того, что он легко читается компьютером, тогда как простой текст нужно анализировать. И помните, что с такими типами файлов, как JSON, вы можете использовать сжатие GZIP, чтобы значительно сократить объем данных, необходимых для передачи.

Примечание. Когда вы углубляетесь в детали, POST должен только создавать новые ресурсы, а PUT должен изменять только существующие ресурсы.