УСТОЙЧИВАЯ Инфраструктура
API REST является последовательным и понятным для человека. Это самодокументирование.
GET wp-json/wp/v2/posts
довольно ясно, что он делает. Это GET
несколько постов.
У вас есть пространство имен:, wp
версия: v2
и коллекция объектовposts
Можете ли вы угадать, что: GET wp-json/wp/v2/posts/5
делает? Как насчет: GET wp-json/wp/v2/posts/5/comments
Как насчет:GET wp-json/shop/v2/orders/345/lines/11/price
Глядя на это, разработчик может легко догадаться, что он получит цену линии 11
при заказе, 345
даже не читая документацию. Разработчик даже может легко сказать, что он исходит от shop
плагина, так как он находится в пространстве имен.
Как насчет POST /wp-json/v2/posts title=New Blog Post
Как насчетPUT /wp-json/v2/posts title=New Title
Это тоже довольно ясно. Это делает новый пост. Кстати, он возвращает идентификатор нового поста. Это не про AJAX ИЛИ REST API. AJAX - это просто технология доступа к REST API. Принимая во внимание, прежде, вам придется придумать кучу абстрактных АЯКС имен функций , таких как:
get_price_for_lineitem( $order, $line )
. Это будет возвращать только число или объект JSON? Я не уверен, где находится документация. Ох ... был вызов Ajax get_order_line_price
или get_lineitem_price
.
Разработчик не должен принимать эти решения, потому что существующий wp-json
API предоставляет хорошую базовую модель, которой нужно следовать при создании ваших собственных конечных точек. Конечно, разработчик плагинов или API может нарушить эти правила, но в целом легче следовать стандарту, который уже установлен, и большинство разработчиков предпочли бы следовать уже установленному шаблону (посмотрите, насколько распространены сейчас шаблоны jQuery).
Абстракция без отвлечения
Я забочусь о том, как POST /wp-json/mysite/v1/widgets title=Foobar
работает? Нет. Я просто хочу создать новый Widget
и хочу получить взамен идентификатор. Я хочу сделать это из формы на моем внешнем интерфейсе, не обновляя страницу. Если я делаю запрос к URL, мне все равно, PHP это, C #, ASP.NET или какая-либо другая технология. Я просто хочу создать новый виджет.
REST API отделяет серверную часть от передней части. Технически, если ваш API достаточно хорош, вы можете изменить весь свой стек бэкэнда. Пока вы поддерживаете ту же структуру API REST, все, что зависит от API, не будет затронуто.
Если ваш REST API достаточно простой и непротиворечивый, с использованием существительного, такого Widgets
как набор объектов, и существительного / идентификатора, например, Widget/2
для обозначения единого объекта, действительно просто написать этот API в совершенно другой технологии, так как это более или менее базовая схема базы данных. код.
Использует стандартные глаголы HTTP Request.
API REST используют ядро работы сети и VERB (читай: действие), которые вы используете, для сопоставления со стандартными функциями CRUD для данных.
CREATE : POST
READ : GET
UPDATE : PUT/PATCH
DELETE : DELETE
Есть больше HTTP-глаголов, но это основы. Каждый запрос через Интернет использует эти глаголы. REST API находится прямо над моделью, в которой сеть строится по запросам. Нет необходимости в каком-либо уровне коммуникации или модели абстракции между ними. Это просто стандартный http-запрос к URL, который возвращает ответ. Вы не можете получить намного проще, чем это.
По сути, это делает разработчика более осведомленным о том, как на самом деле работает сеть, и когда вы приблизитесь к пониманию того, как работают базовые протоколы, вы в конечном итоге сделаете более эффективный и лучший продукт.