Побудова користувацького API REST


10

У мене є сайт WordPress.org, який здійснює введення користувачів, здійснює пошук у користувальницькій базі даних та відображає результати запиту. У мене це працює за допомогою класу wpdb . Зараз я намагаюся зробити це для роботи з додатком для Android.

Як я розумію, побудова сервера RESTful - це "найкраща практика" для подібних речей. Я переглянув кілька плагінів, які могли б допомогти мені це зробити, і я натрапив на:

  1. json-rest-api - мені здається, що це відкриває лише основну функціональність WordPress (тобто повідомлення, сторінки, користувачі тощо), і я не можу зрозуміти, як змусити це виконувати власні запити на таблицях, що не використовуються за замовчуванням.

  2. У цій публікації в блозі йдеться про те, що wp mvc робить саме те, що я хочу, за винятком того, що він не оновлювався протягом 2 років, так що свого роду це виключає.

  3. Є також Jetpack, але, як я бачив, json-rest-api є оновленою версією цього, і, здається, він також дає лише основні функціональні можливості.

Чи є спосіб зробити так, щоб будь-який з цих плагінів працював на спеціальні кінцеві точки? Або є інші плагіни, яких я ще не знайшов?

Якщо я не використовую плагін, я думаю, що мені доведеться прокрутити свій власний. Я можу зробити це або з нуля (використовуючи wpdb, msqliабо що - то), або за допомогою API на таких , як Restler .

Якщо я роблю власноруч, чи повинен я створити шаблон у своїй темі, чи робити там REST речі та призначити цю тему сторінці на інформаційній панелі? Або для цього краще мати інший сервер, який працює окремо для WordPress?

Наскільки я бачу, це єдині мої варіанти. Мені хотілося б знати, які рекомендації щодо найкращих практик подібного роду. Мені важко повірити, що цього ніхто ще не робив. Чи є якісь варіанти, які я не помітив?


З чим ти закінчився? Я намагаюся створити власні маршрути / кінцеві точки для api відпочинку api та 1) документація жахлива 2) в Інтернеті є нульові приклади. Дайте мені знати, який маршрут ви пройшли, будь ласка!
Джексонкр

1
Я вирішив зайнятися створенням власного API за межами Wordpress, але він має доступ до тієї ж бази даних. Я ніколи насправді не обіймався цим, хоча це був лише побічний проект, і я був надто зайнятий іншими речами: P. Якби я був ти, я би заглянув у рамки symfony2 або laravel . Вони дійсно швидко і легко підняти щось і працювати.
Yep_It's_Me

Відповіді:


15

TL; DR

Так, WordPress, безумовно, може виступати в якості доповнення для мобільного додатку. Так, сторінка може виступати як кінцева точка / інтерфейс відпочинку. Ні, шаблон теми - це не логічна територія. Напишіть свій плагін.


Покажчики

Мені важко повірити, що цього ніхто ще не робив.

Я, наприклад, маю. Більше одного разу. І я майже впевнений, що не один. «Мабуть, ніхто про це не веде великого блогу» - це, мабуть, більш правильне поняття.

Якщо я не використовую плагін, я думаю, що мені доведеться прокрутити свій власний. Я можу це зробити з нуля (за допомогою wpdb, msqli чи чогось іншого), або за допомогою API, такого як Restler .

Я не знаю "Restler", і це все-таки поза межами цього стека.
Що стосується "використання wpdb, msqli чи чогось іншого": Ви, звичайно, використовуєте wpdbдля збереження (отриманих) даних у базі даних, але це не стосується логіки кінцевої точки.

Шаблон теми - це не те, на що слід звернути увагу. Теми призначені для візуального представлення. Кінцева точка REST взагалі не потребує візуального вигляду.

Вставте кінцеву точку на сторінку, яку ви хочете використовувати для неї, за допомогою короткого коду .

Нехай обробник короткого коду / зворотний виклик прослуховують або HTTP POST, або GET, і відповідно викликають збереження даних або інші вторинні методи.


Чи має сенс використовувати WordPress як кінцеву точку / бекенд?

Це залежить.
Якщо все, що вам потрібно, - це кінцева точка для збереження даних: Ні. Завантаження всього ядра просто для збереження кількох рядків коду за допомогою використання wpdbне варто.
Якщо вам потрібен бекенд, до якого можна ввійти через веб-браузер, який може відображати табличні дані, пропонувати способи зміни даних, можливо, навіть із кількома рівнями доступу / ролями та правами користувачів, то так, це має сенс.


3
Дійсно хороша відповідь +1.
gmazzap

2
Подвійно це. +1
кайзер

Дякую за дійсно чудову відповідь! Отже, з цього вибору є два варіанти: 1. написати власний плагін; 2. написати окрему послугу. Оскільки для мене потрібна лише кінцева точка - це взяти кілька параметрів GET і повернути тіло JSON, я думаю, що я повинен написати власну службу, оскільки "Завантаження всього ядра просто для збереження кількох рядків коду за допомогою wpdbне варто".
Yep_It's_Me

0

Плагін API Endpoints повинен охоплювати всі ваші потреби, особливо якщо ви знайомі з MySQL. Ви зробите такі кроки:

  1. Створіть новий шаблон Twig, введіть запит MysQL для отримання даних зі свого сайту WordPress та використовуйте синтаксис Twig для виведення даних у будь-якому форматі. Наприклад, JSON.

  2. Створіть нову кінцеву точку API, дайте їй ім’я та налаштуйте його для використання шаблону Twig, який ви створили на кроці 1.

Після завершення повторіть кроки 1 і 2 для кожної кінцевої точки, яку ви хочете створити. API Endpoints використовує стандартну систему аутентифікації WordPress, тому найкраще створити окремого користувача у вашій WordPress та використовувати його ім’я користувача / пароль для доступу до кінцевих точок api.


Кінцеві точки API виглядають цікаво для мого проекту, але для нього потрібне Twig Anything, який майже неможливо отримати, оскільки він вимагає увійти у свій блог, що не дозволяє публічних підписок.
mettjus

Зараз я зрозумів, що це не безкоштовно ...
вчора

0

Нова версія WP REST API знаходиться в бета-версії, але має досить гарну документацію щодо того, як зареєструвати власні кінцеві точки REST. Існує також дуже невелике розмиття щодо того, як це можна зробити у версії 1, що я збираюся спробувати, оскільки бета-версія не гарантована або залишається стабільною. Я припускаю, що ви могли б потім використовувати wpdb з методів, які ви реєструєте. Я насправді просто використовую речі ACF і попередньо розміщую їх на об'єктах у моєму PHP, щоб створити приємну, пошукову / сортувальну сторінку з множинними властивостями з angularJS.

Порівняння між WWP REST API 1 та 2 з їхніх документів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.