CodeIgniter — это легкий и мощный PHP-фреймворк, который позволяет быстро разрабатывать веб-приложения. Он также предоставляет удобные инструменты для работы с RESTful-службами.
- Что такое RESTful-службы?
- Настроим CodeIgniter для работы с RESTful-службами
- Создание RESTful-служб в CodeIgniter
- Тестирование RESTful-служб
- Подробный маршрут
- Введение.
- Пререквизиты.
- Часть 1 — Создание RESTful API
- Шаг 1 — Настройка демонстрации
- Шаг 2: Извлечение URL-адреса
- Шаг 3: Код.
- REST_CONTROLLER.
- ресурс.
- Удаление.
- Доступ к параметрам и возвращаемым данным
- $this->Получить (а)
- $this->ПОЗИЦИЯ ()
- $this->Пост ()
- $this->Удалить ()
- $this->Реакция.
- Шаг 4: Используйте модель
- Шаг 5: Защитите API.
- Базовый.
- Дайджест.
- Часть 2 — взаимодействие с restful services
- Различные способы взаимодействия с Rest
- file_get_contes ()
- Остальная часть клиентской библиотеки
- Связаться с Twitter.
- Вывод:
Что такое RESTful-службы?
REST (Representational State Transfer) — это архитектурный стиль веб-служб, который определяет правила и ограничения для взаимодействия между клиентом и сервером. RESTful-службы используют HTTP-протокол для передачи данных и выполняют операции CRUD (Create, Read, Update, Delete).
Настроим CodeIgniter для работы с RESTful-службами
Прежде чем начать работу с RESTful-службами в CodeIgniter, необходимо установить и настроить библиотеку 'rest'.
$autoload['libraries'] = array('rest');
$config['rest_enabled'] = TRUE;
$config['rest_debug'] = TRUE;
$config['rest_default_format'] = 'json';
$config['rest_status_field_name'] = 'status';
$config['rest_message_field_name'] = 'message';
$config['rest_data_field_name'] = 'data';
$route['api/users']['get'] = 'api/users';
$route['api/users/(:any)']['get'] = 'api/users/view/$1';
$route['api/users']['post'] = 'api/users/create';
$route['api/users/(:any)']['put'] = 'api/users/update/$1';
$route['api/users/(:any)']['delete'] = 'api/users/delete/$1';
- Скачайте библиотеку 'rest' с официального сайта CodeIgniter.
- Разархивируйте библиотеку и скопируйте папку 'application/libraries/Rest' в папку 'application/libraries' вашего проекта.
- Откройте файл 'application/config/autoload.php' и добавьте 'rest' в массив 'libraries', чтобы библиотека автоматически загружалась при каждом запросе:
- Теперь вы должны настроить основные параметры для работы с RESTful-службами. Создайте файл 'application/config/rest.php' со следующим содержимым:
- Для удобства добавьте роуты для своих RESTful-служб в файл 'application/config/routes.php'. Например:
Создание RESTful-служб в CodeIgniter
Теперь, когда ваш проект настроен для работы с RESTful-службами, вы можете создавать свои API-методы.
Создайте контроллер в папке 'application/controllers' с именем 'Api.php' и определите в нем методы для CRUD-операций.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . '/libraries/REST_Controller.php';
class Api extends REST_Controller {
function __construct
{
parent::__construct;
$this->load->model('user_model');
}
public function users_get
{
// Получить список пользователей
}
public function users_view_get($id)
{
// Получить информацию о конкретном пользователе по ID
}
public function users_create_post
{
// Создать нового пользователя
}
public function users_update_put($id)
{
// Обновить информацию о конкретном пользователе по ID
}
public function users_delete_delete($id)
{
// Удалить конкретного пользователя по ID
}
}
Внутри каждого метода контроллера вы можете использовать модели и другие классы CodeIgniter для выполнения необходимых операций с данными.
Тестирование RESTful-служб
RESTful-службы можно тестировать с помощью различных инструментов, таких как curl, Postman или расширения для браузеров, поддерживающие отправку HTTP-запросов.
Например, чтобы получить список пользователей, сделайте GET-запрос по адресу 'http://ваш_сайт/api/users'.
Адреса для всех остальных операций CRUD будут иметь аналогичное построение, с использованием методов GET, POST, PUT и DELETE и соответствующего пути.
CodeIgniter предоставляет удобные инструменты для работы с RESTful-службами. Настройка и использование RESTful-служб в CodeIgniter позволяет быстро разрабатывать и расширять веб-приложения.
Следуя приведенным выше шагам, вы сможете создавать мощные и гибкие API для вашего приложения и обеспечивать взаимодействие с другими системами через RESTful-интерфейс.
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 из вашего веб-приложения.
Пререквизиты.
- У вас есть локальный или онлайн веб-сервер, и вы знаете, как управлять файлами на нем.
- Вы прочитали несколько руководств по CodeIgniter с нуля.
- Вы понимаете, как настроить CodeIgniter.
- Вы имеете некоторое представление о службах RESTful.
Этот курс состоит из двух частей. Сначала вы узнаете, как создать RESTful сервис, а затем как манипулировать им различными способами.
Часть 1 — Создание RESTful API
Шаг 1 — Настройка демонстрации
Сначала нужно скачать код codeigniter-restserver с GitHub, извлечь его и перенести на свой сервер.
Откройте папку, и вы увидите полную установку CodeIgniter, а демонстрация будет включена. Это позволит вам протестировать демонстрационную версию REST, прежде чем интегрировать ее в существующее приложение.
"Откройте файл application/config/config.php и установите base_url для получения ссылки. Этот base_url будет отличаться у разных людей и полностью зависит от того, куда вы загружаете файл.
Шаг 2: Извлечение URL-адреса
После извлечения файла и установки base_url запустите установку RESTful CodeIgniter и посмотрите на демонстрационную версию. Посмотрите на базовый URL по умолчанию.
Здесь вы можете найти ссылку на контроллер example_api в файле "application/controllers/example_api.php". Давайте разберем эти примеры URL-адресов, чтобы понять, что происходит. Первый URL очень прост.
Этот URL выглядит очень похоже на другие URL CodeIgniter с контроллерами и методами, но на этой диаграмме вы можете увидеть, что он называется "ресурсом". REST — это ресурсы, которые являются сущностями внутри приложения, взаимодействующими (добавление, удаление, редактирование, запрос) на основе заголовков HTTP и строк запроса URL или аргументов HTTP.
Формат вывода по умолчанию — XML, что показано в базовом примере. Другие ссылки немного длиннее и показывают, как передавать параметры и изменять формат вывода URL.
Обычно CodeIgniter передает только значения параметров, но REST-контроллер принимает любое количество параметров в любом порядке. Чтобы это сработало, вам нужно передать имя параметра, за которым следует значение, попарно.
Параметр 'format' находится в конце URL. Это связанный параметр, который изменяет формат вывода запрашиваемых данных следующим образом.
Предоставляя разработчикам и клиентам 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, так как можно использовать существующие модели и библиотеки, которые не нужно кодировать заново.
Этот пример содержит пять новых цитат кода
$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 из существующей кодовой базы.
Загрузка поставляется с полной установкой CodeIgniter для демонстрационных целей, позволяя вам создать API с нуля, но только с двумя важными файлами.
- Application/config/ret.php
- 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-ответы принимаются только для необработанного формата. Это означает, что приложение должно быть преобразовано.
Curl — это наиболее гибкий способ взаимодействия с REST API, поскольку он разработан именно для таких приложений. Вы можете настроить головки HTTP, параметры HTTP и т.д. Пример использования example_api и curl для обновления пользователя и создания запроса на отправку показан ниже.
Взаимодействие с API работает нормально, но есть две проблемы с этим методом
- Он использует уродливый и запутанный синтаксис — представьте себе создание нескольких приложений на его основе.
- По умолчанию 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 разными способами.
- Вместо /format /json поддерживаются альтернативы, основанные на URL-адресах в формате .JSON. Некоторые расширения являются обязательными, другие — нет, но всегда лучше их добавить.
- В основном поддерживает только get/post, но начинает добавлять методы удаления
- Например, 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.