Работа со службами RESTful в CodeIgniter

Заметки Дэва

CodeIgniter известен своими возможностями как фреймворк для веб-приложений PHP, но не получил широкого распространения в других странах. Сегодня мы научимся использовать CodeIgniter для создания RESTful API для вашего веб-приложения и покажем, как он взаимодействует с вашими собственными API и другими RESTful веб-сервисами, такими как Facebook и Twitter.

Подробный маршрут

  • Программы: CodeIgniter, CodeIgniter REST сервер и CodeIgniter REST клиент
  • Сложность: нормальная
  • Расчетное время выполнения: 30 минут

Введение.

Если вы следили за серией статей CodeIgniter From Scratch, вы уже знаете, как относительно быстро и легко создавать веб-приложения, такие как блоги, системы CMS и сайты-брошюры. Что вы, возможно, не рассматривали, так это создание интерактивного API с помощью CodeIgniter. Мы попробовали несколько REST и обнаружили, что им не только не хватает простоты, но и большинства функциональных возможностей, которые вы ожидаете от реализации RESTful. Поэтому мы создали свой собственный REST. Это руководство покажет вам, как использовать этот код для создания RESTful API и предоставит примеры того, как вы можете взаимодействовать с API из вашего веб-приложения.

Пререквизиты.

  1. У вас есть локальный или онлайн веб-сервер, и вы знаете, как управлять файлами на нем.
  2. Вы прочитали несколько руководств по CodeIgniter с нуля.
  3. Вы понимаете, как настроить CodeIgniter.
  4. Вы имеете некоторое представление о службах RESTful.

Этот курс состоит из двух частей. Сначала вы узнаете, как создать RESTful сервис, а затем как манипулировать им различными способами.

Часть 1 — Создание RESTful API

Шаг 1 — Настройка демонстрации

Сначала нужно скачать код codeigniter-restserver с GitHub, извлечь его и перенести на свой сервер.

Работа со службами RESTful в CodeIgniterРабота со службами RESTful в CodeIgniter Работа со службами RESTful в CodeIgniter

Откройте папку, и вы увидите полную установку CodeIgniter, а демонстрация будет включена. Это позволит вам протестировать демонстрационную версию REST, прежде чем интегрировать ее в существующее приложение.

"Откройте файл application/config/config.php и установите base_url для получения ссылки. Этот base_url будет отличаться у разных людей и полностью зависит от того, куда вы загружаете файл.

Работа со службами RESTful в CodeIgniterРабота со службами RESTful в CodeIgniter Работа со службами RESTful в CodeIgniter

Шаг 2: Извлечение URL-адреса

После извлечения файла и установки base_url запустите установку RESTful CodeIgniter и посмотрите на демонстрационную версию. Посмотрите на базовый URL по умолчанию.

Здесь вы можете найти ссылку на контроллер example_api в файле "application/controllers/example_api.php". Давайте разберем эти примеры URL-адресов, чтобы понять, что происходит. Первый URL очень прост.

Работа со службами RESTful в CodeIgniterРабота со службами RESTful в CodeIgniter Работа со службами RESTful в CodeIgniter

Этот URL выглядит очень похоже на другие URL CodeIgniter с контроллерами и методами, но на этой диаграмме вы можете увидеть, что он называется "ресурсом". REST — это ресурсы, которые являются сущностями внутри приложения, взаимодействующими (добавление, удаление, редактирование, запрос) на основе заголовков HTTP и строк запроса URL или аргументов HTTP.

Формат вывода по умолчанию — XML, что показано в базовом примере. Другие ссылки немного длиннее и показывают, как передавать параметры и изменять формат вывода URL.

Работа со службами RESTful в CodeIgniterРабота со службами RESTful в CodeIgniter Работа со службами RESTful в CodeIgniter

Обычно CodeIgniter передает только значения параметров, но REST-контроллер принимает любое количество параметров в любом порядке. Чтобы это сработало, вам нужно передать имя параметра, за которым следует значение, попарно.

ЧИТАТЬ ЕЩЁ:  WordPress, Joomla или Drupal - что лучше

Параметр 'format' находится в конце URL. Это связанный параметр, который изменяет формат вывода запрашиваемых данных следующим образом.

Работа со службами RESTful в CodeIgniterРабота со службами RESTful в CodeIgniter Работа со службами RESTful в CodeIgniter

Предоставляя разработчикам и клиентам API возможность выбирать, данные какого формата использовать, API открыт для более широкой аудитории и может использоваться с множеством языков программирования и систем. И это не единственные формы, с которыми может работать ваш REST API:.

  • XML — почти все языки программирования могут читать XML
  • JSON — подходит для JavaScript и т.д.
  • CSV — открывается в программах вычислительных листов
  • HTML — Простая панель HTML
  • PHP — представление кода PHP. Это можно отредактировать с помощью eval()
  • Serialize — Сериализованные данные, которые могут быть предоставлены PHP

Добавление формы к URL технически не самое лучшее изменение Restful forms, но оно легко контролируется браузером и позволяет разработчикам легко извлекать приложения с API без Curl. Более спокойный подход заключается в использовании Curl для направления к аудитору типа содержимого HTTP, который мы обсудим позже.

Шаг 3: Код.

Открыв файл application/controller/example_api.php, вы сразу заметите отличие от обычного контроллера Codeigniter.

REST_CONTROLLER.

В стандарте MVC контроллер является центральной точкой логики. Он вызывается пользователем по запросу, восстанавливает данные и отображает представления на основе логики контроллера. Codeigniter имеет свою собственную логику работы аудиторов, но мы делаем нечто иное и нуждаемся в собственной библиотеке REST_CONTROLLER. Поэтому вместо того, чтобы просто использовать:.

ресурс.

Создается пустой контроллер, за которым следует метод или "ресурс". Если вы привыкли работать с Codeigniter, это, вероятно, самая запутанная часть семинара. По сути, вы получаете комбинацию ресурса и глагола HTTP для создания имени метода. Так, в двух рассмотренных ранее примерах были пользователь ресурса и пользователь. Поскольку оба были загружены в браузер, был использован GET-запрос, что означает, что были использованы следующие два метода.

Это может показаться немного странным, но один и тот же URL может быть использован для ответа приложению в зависимости от используемого глагола HTTP. Если кто-то попытается получить доступ к API запрещенным способом (delete или remove в данном примере), он получит сообщение 404. если HTTP-глагол не подходит, пожалуйста, объясните.

Используется для восстановления информации о существующем ресурсе. Это лучше всего использовать для восстановления информации об одном из ресурсов REST (например, о пользователе), поскольку она используется браузером при вводе URL и нажатии кнопки "go" или при переходе по ссылке.

Он используется для обновления информации о существующих ресурсах. Браузеры используют его для отправки большинства типов онлайн-форм, некоторые используют get для отправки форм со строкой запроса, содержащей данные поля.

PUT больше не используется, не поддерживается большинством браузеров и требуется для создания новых ресурсов.

Удаление.

Также не используемый многими путешественниками, этот глагол HTTP, вероятно, используется для удаления ресурса.

Объявление каждого глагола в пользовательском ресурсе с кодом в нем выглядит следующим образом

Доступ к параметрам и возвращаемым данным

Поэтому API имеет структуру, которая координирует ресурсы и устанавливает методы для каждого глагола HTTP. Рекомендуется поддерживать: параметры необходимы для того, чтобы можно было использовать модели и библиотеки CodeIgniter. Это одно из главных преимуществ использования CodeIgniter для API, так как можно использовать существующие модели и библиотеки, которые не нужно кодировать заново.

ЧИТАТЬ ЕЩЁ:  Вникаем в принцип работы HTTP-заголовка

Этот пример содержит пять новых цитат кода

$this->Получить (а)

Используется для возврата переменной get из строки запроса, например, index.php/example_api/user? id = 1 или может быть определена в более продвинутом режиме с помощью index.php/example_api/user/id/1 от codeigniter.

$this->ПОЗИЦИЯ ()

Является псевдонимом для $this->input->post () — это способ CodeIgniter получить доступ к $ _POST с защитой от XSS.

$this->Пост ()

Считывает аргументы Put, заданные через заголовки HTTP или Curl.

$this->Удалить ()

Считывает аргумент Delete. Это определяется в заголовке HTTP или Curl.

$this->Реакция.

Отправляет данные в браузер в любом запрошенном формате данных или по умолчанию в XML. Вы можете опционально передать код статуса HTTP, чтобы показать, что он работал или не прошёл. Например, если предоставленный ID не был в базе данных, вы можете использовать $this->response(array('error' => ("Пользователь не найден"), 404), 404), 404), 404), 404), 404), 404), 404).

Шаг 4: Используйте модель

До сих пор мы работали с образцами API и сотрудничали над чистой установкой. Следующий шаг — запуск REST API из существующей кодовой базы.

Работа со службами RESTful в CodeIgniter

Загрузка поставляется с полной установкой CodeIgniter для демонстрационных целей, позволяя вам создать API с нуля, но только с двумя важными файлами.

  1. Application/config/ret.php
  2. Application/Libraries/REST_CONTROLLER.php

Поместите эти два файла в ваше приложение CodeIgniter и создайте новый контроллер API.

Здесь показан пример API с некоторыми родовыми именами моделей В первом методе мы подбираем ?id=XX и передаём его модели. Если данные найдены, мы отправляем их в функцию $this->Если найден ответ () с условием 200, не возвращайте тело. Вы можете использовать расширения для выполнения всех действий API в вашем онлайн-приложении.

Шаг 5: Защитите API.

Теперь, когда API создан, необходимо убедиться, что только доступные пользователи могут взаимодействовать с API. Чтобы установить тип соединения, имя пользователя и пароль, откройте файл 'Application/Config/REST.PHP' в вашем коде.

Любой человек может взаимодействовать с вашим API-аудитором.

Базовый.

Относительно небезопасный метод подключения, который следует использовать только для внутренних/защищенных сетей.

Дайджест.

Более безопасный метод подключения, который шифрует имена пользователей и пароли. Используйте Digest, если вам нужен безопасный API, который может использовать каждый.

Настройка параметров пользователя. Каждое соединение представляет собой таблицу с ключами и значениями. Ключ — это имя пользователя, а цена — пароль. Добавьте в таблицу столько, сколько вам нужно, и отправьте ее всем, используя API.

Часть 2 — взаимодействие с restful services

Будь то API, который вы только что создали, или публичный сервис, такой как Twitter, вы захотите каким-то образом взаимодействовать с ним. Видя, как Restful Services работает с базовыми HTTP-запросами, это очень легко сделать различными способами.

Различные способы взаимодействия с Rest

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

file_get_contes ()

Очень простая функция file_get_contents() php может быть использована для выполнения базового приложения Get. Это самый простой из всех методов, но стоит отметить, что он "быстрый и грязный".

Обратите внимание, что этот метод не работает с HTTP Digest, но при использовании аутентификации HTTP Basic данные могут быть восстановлены из пароля REST FUL API путем назначения следующего аннуитета.

Существует несколько проблем с этим методом. Единственный способ установить дополнительные заголовки HTTP — это вручную использовать функцию PHP Stream_Context_Create (). Это очень сложно для начинающих разработчиков HTTP-запросов. Другим недостатком является то, что HTTP-ответы принимаются только для необработанного формата. Это означает, что приложение должно быть преобразовано.

ЧИТАТЬ ЕЩЁ:  15 отличных сайтов для изучения программирования

Curl — это наиболее гибкий способ взаимодействия с REST API, поскольку он разработан именно для таких приложений. Вы можете настроить головки HTTP, параметры HTTP и т.д. Пример использования example_api и curl для обновления пользователя и создания запроса на отправку показан ниже.

Взаимодействие с API работает нормально, но есть две проблемы с этим методом

  1. Он использует уродливый и запутанный синтаксис — представьте себе создание нескольких приложений на его основе.
  2. По умолчанию Carl установлен не на всех серверах.

Чтобы избавиться от этой уродливой отставки Codeigniter, была разработана библиотека Curl, которая значительно упрощает работу.

Возникает точно такой же вопрос, как и в случае с библиотекой Curl.

Разве это красивее? Есть еще более простой способ сделать все остальное в вашем приложении Codeigniter.

Остальная часть клиентской библиотеки

Клиентская библиотека REST разработана с помощью библиотеки Curl для обработки преобразования форматов, HTTP-соединений и других аспектов API REST.

Здесь вы видите, что запрос GET выполняется путем отправки ID в качестве параметра и сообщения библиотеке, что вы хотите получить содержимое 'JSON'. Он обрабатывает настройки типа содержимого и преобразует данные в объект PHP. Вы можете изменить его на 'xml', 'json', 'serialize', 'php', 'csv' или любой другой пользовательский MIME-тип. Например.

Как вы, вероятно, догадались, как и $this->rest->get(), библиотека также поддерживает $this->rest->post(), $this->rest->put(), $this->rest->delete () Совпадает со всеми методами REST_CONTROLLER.

Результаты Var_Dump () из Клиентской библиотеки REST должны быть выполнены, чтобы вернуть правильный формат данных. Конвертация будет осуществляться в таблицы, а иногда и в объекты, в зависимости от того, как они будут преобразованы в PHP. Если возвращаемый тип MIME не поддерживается, просто верните форму в виде простого текста.

Связаться с Twitter.

Вы можете использовать эту библиотеку Restful для связи с другими сервисами Restful, такими как Twitter и Facebook. Вот простой пример того, как восстановить информацию о конкретном пользователе на основе идентификатора, используя стандартный формат Twitter XML.

Вы заметите, что это взаимодействует с API Twitter разными способами.

  1. Вместо /format /json поддерживаются альтернативы, основанные на URL-адресах в формате .JSON. Некоторые расширения являются обязательными, другие — нет, но всегда лучше их добавить.
  2. В основном поддерживает только get/post, но начинает добавлять методы удаления
  3. Например, URL-адреса не всегда содержат ресурсы. Методы пользователя/поиска — это методы REST, но не списки.

Следите за этими различиями, так как они могут вас поймать. Если вы застряли, снова $this->rest->DEBUG () Любой диапазон информации о приложении REST.

Обзор.

Объединив информацию о RESTful сервисах, клиентской библиотеке CodeIgniter RESTful, документации по API Twitter и другой документации по RESTful API, вы можете использовать REST для создания очень мощных приложений, которые интегрируются с настраиваемыми веб-сервисами и публичными сервисами. Вы можете создавать очень мощные приложения, которые интегрируются с настраиваемыми и общедоступными веб-службами с помощью REST. Создавая больше REST_Controllers или модульных API и используя Matchbox или Modular Separation для создания api.php контроллеров для каждого модуля, и поддерживая API как хорошо организованное приложение. Вы можете расширить API.

Оцените статью