Я ищу хороший ресурс, который покажет мне правильный путь для создания спокойного API.
Интересные темы: аутентификация в частности и безопасность в целом, производительность, масштабируемость, лучшие практики и другие полезные вещи.
Я собираюсь построить его на PHP (Slim или Silex), и прежде чем я начну, я хотел бы подумать обо всем дизайне, чтобы я мог идти правильным путем с самого начала.
В Интернете много информации и постов, но все они используют разные методы и подходы.
Есть ли что-то, что кажется «стандартом» в спокойном мире?
Есть ли что-то, что кажется «стандартом» в спокойном мире?
Не выше уровня использования HTTP. Существует множество типов мультимедиа для кодирования данных API (см. Гипермедиа ниже), множество различных лучших практик и множество RFC, которые охватывают различные аспекты работы с HTTP (например, авторизация с использованием OAuth2).
Вот подборка ресурсов, которые стоит прочитать … Я думаю, что вы получите максимальную отдачу от чтения одной или двух книг.
Авторские ресурсы
книги
Аутентификация
Обработка ошибок
гипермедиа
Структуры URL
Частичные обновления
Некоторые соображения о PHP для создания остальных API
PHP широко используется на протяжении многих лет.
Но в течение этого длительного периода он обнаружил некоторые важные проблемы: он стал чудовищной технологией, и его использование показало некоторую уязвимость безопасности, такую как инъекция SQL, отсутствие централизованного реестра пакетов, несовместимость API и производительность на низком уровне.
Для создания REST apis существуют более современные технологии, такие как Ruby on Rails и Django, или Node.js, которые легко доступны.
Использование PHP для построения Rest APIS
Вы можете, конечно, построить свой API в php, если лучшие технологии зародились в последние годы. Многие компании до сих пор используют его в производственных условиях.
Вы можете выбрать два разных подхода для построения своей инфраструктуры:
Второй подход позволяет сэкономить время и больше сосредоточиться на своей бизнес-логике, делегируя некоторые общие операции доверенному стороннему написанному коду.
Например, вы можете проверить эти библиотеки, которые обычно используются в приложениях PHP, чтобы выполнить работу быстрее:
https://github.com/PHPAuth/PHPAuth помочь вам с процессом аутентификации (проверьте также https://github.com/firebase/php-jwt для аутентификации без сохранения состояния).
https://github.com/mongodb/mongo-php-driver (mongodb) или https://github.com/cagartner/sql-anywhere-client (SQL) Вам нужно будет взаимодействовать с базой данных, и эти ссылки являются примерами некоторых клиентских библиотек, которые помогают вам в работе.
Используя что-то вроде node.js
Node.js — это современные технологии, созданные для того, чтобы люди могли делать то, что вы собираетесь делать. Это быстрый, масштабируемый (php меньше), простой в использовании и очень неистовое сообщество, которое пишет код и делится открытым исходным кодом.
Например, используя http://expressjs.com/ Вы можете управлять всей маршрутизацией вашего приложения в считанные минуты. Вы пишете свое приложение в javascript, поэтому вам придется беспокоиться о физиологических проблемах javascript (замыканиях, асинхронных вызовах и т. Д.), Но после того, как вы решите эту довольно сложную часть, с помощью node.js вы создадите более эффективные API отдыха и ваш сервер. потребуется меньше ресурсов процессора и мощности для принятия и ответа на запросы.
Для лучшей практики на GitHub есть хорошее хранилище рекомендаций. Вы можете перейти на следующую страницу для получения дополнительной информации:
Вы также можете посмотреть на пасеку для разработки API:
На самом деле для аутентификации лучше всего полагаться на фреймворк, а не на реализацию с нуля. Однако для целей обучения это совсем другой случай, но для выпуска его в производство лучше всего использовать то, что обеспечивает структура. Большинство фреймворков имеют хорошую реализацию, которая, вероятно, со временем была повторена сообществом, чтобы быть достаточно надежной. Некоторые фреймворки, такие как laravel, также предоставляют решение для атак csrf (подделка межсайтовых запросов).
Еще одна полезная вещь, на которую вы можете обратить внимание — это JWT (JSON Web Token). Вот полезная ссылка, которая суммирует, почему это так здорово:
Я не знаю, как смотреть на масштабируемость с точки зрения API. Мне кажется, это больше похоже на инфраструктурный вопрос. Однако с аутентификацией (на основе сеанса или токена) масштабируемость может стать проблемой, например, если у вас другое количество экземпляров, обслуживающих ваших пользователей, вам необходимо поддерживать либо липкий сеанс, либо сеанс, хранящийся в хранилище значений ключей быстрого доступа или в базе данных.
Пожалуйста, посмотрите на моя самоуверенная презентация о API REST на основе JSON-LD, SemWeb, Hydra Core.
Если вы не хотите выполнять тяжелую работу по чтению книг, ознакомьтесь с API-интерфейсами RESTful в серии Real World от https://knpuniversity.com/search?q=restful
Затем для углубленного понимания пройти
Создавайте API, от которых вы не будете ненавидеть https://leanpub.com/build-apis-you-wont-hate