За последние 24 часа нас посетили 16906 программистов и 1297 роботов. Сейчас ищут 1459 программистов ...

написать свой АПИ

Тема в разделе "Прочие вопросы по PHP", создана пользователем Taktreba, 9 дек 2021.

  1. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    для меня наступил интересный момент развития как программиста, мне поставили задачу написать новый АПИ для нашего проекта.
    есть старый апи, и есть опытный человек который поможет.
    но пока задача была поставлена так - думай...
    я хз в какую сторону думать, какие паттерны и какие технологии мне пригодится

    Нужен совет сообщества Fella, какие паттерны какие технологии, куда смотреть что читать и куда бежать, на чем сделать акцент, может сперва подготовить документацию.
    прозвучал как то graphql - мне оно нужно?

    Буду благодарен любой информации
     

    Вложения:

  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    API пишется не для того чтобы было, а под конкретную цель...
    Узнай - для чего писать новый API, чем не устраивает старый...
    на основе этого делай выводы и делай...
     
    Taktreba нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Суть темы - написать свой API.

    C какой целью, для чего, что эта API будет делать ? и тут:

     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.112
    Симпатии:
    1.244
    Адрес:
    там-сям
    Сразу закладывайся на документацию. Без неё считай нету у тебя API.
    Есть разные реализации для генерации страничек с описанием. Лично мне по вкусу когда она генерится из атрибутов phpdocs,
    Паттерны? Принципы RestfulAPI
    graphql? тебе не нужно. )
     
  5. amberson

    amberson Активный пользователь

    С нами с:
    23 июл 2020
    Сообщения:
    65
    Симпатии:
    16
    Помимо restful почитай про json-pure подход.
     
    Taktreba нравится это.
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Статья в двух словах - упаковать все и отправлять/принимать все через сокет.

    516-stol-musornoe-vedro-02-1.jpg
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    лару взял и погнал )
    там под любой апи всё есть

    да всё то же самое что с html, только без html
    вываливаешь чистые данные в JSON и всё )

    неужели не приходилось реализовывать AJAX-ы какие то с JSON ответами?
    принцип же простой как палка
     
    Taktreba нравится это.
  8. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    приходилось конечно.
    у нас есть старый апи, но у меня нет понимания что с ним не так, он(о) работает, оно было написано давно. Сейчас цели и функционал выросли, и нужно переделать, 80% урлов останется, 80% БД таблиц останется. а саму структуру нужно переписать. Видимо пока я не чисто не пойму проблематику старого апи, не смогу написать новый.
    graphql - мне предложили для более быстрого взаимодействия с БД.
    кстати laravel api, интересная идея. Но что то мне подсказывает что ларавель будет отвергнул ввижу потециально низкой скорости работы
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    просто так и спрашиваешь - что не так со старым API, что должно измениться с появлением нового
    нормальная у лары скорость работы
    всё торможение почти всегда возникает при работе с БД и с внешними API
    сам PHP работает достаточно быстро, чтобы о нём можно было не думать
     
    Taktreba нравится это.
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    1. Для начала нужно понять - для чего будет использоваться API (для моб приложений, для фронта, общедоступный для клиентов, партнеров). Кароче- кто, как и зачем будет забирать данные.
    2.
    ... надеюсь предыдущая версия api поддерживает версионность?))) ну когда например /api/v1/... отдает данные по старому, а api/v2/... уже отдает новый api. Даже если нет - советую заложить в новой версии. Кроме того непонятно - неужели для api будут введено 20% новых таблиц? ... странно... api обычно работает с уже существующей структурой БД.
    3. Ну и возвращаемся к началу - без понимания, зачем надо это делать - лучше этого не делать )))
     
    Taktreba нравится это.
  11. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    а что конкретно там есть "все"? Что по сути мне нужно?
    ну роутинг понятное дело.
    валидация?
    что еще?
    --- Добавлено ---
    почему не нужно? можешь попробовать развернуть мысль? мне нужны аргументы.
    Насколько я понял что графюл возврвщает данные более структурированно. Мне не нужно гонять туда сюда огромные jsonы, я буду получать ровно то что я прошу... Ну это как я понимаю его работу.

    А как на самом деле?
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    валидация
    роли
    разрешения/доступы
    response json structure REST свои правила
    response status-success action-false
    response status-success action-update-container ... обновить часть страницы с указанным контейнером
    response status-success action-message-container ... логин пуст... пароль пуст... все пучком
    response status-success action-message-alert ... логин пуст... пароль пуст... все пучком
    response status-success action-redirect
    response status-failed .... 404... 500...​

    могу в дисе показать как выглядит это.

    Если строить систему управления клиентами, подписками, с различными/безумными хотелками (CRM) -- придется писать с нуля, юзая лишь компоненты.
     
    Taktreba нравится это.
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.112
    Симпатии:
    1.244
    Адрес:
    там-сям
    повышенная сложность реализации. для любого усложнения должна быть стопудово веская причина. а не просто "было бы здорово, модно, красиво".
    почаще задавай вопрос "зачем?". половина запросов сама отпадёт за ненадобностью, а вторая половина будет изложена так, что решение окажется на поверхности.
    --- Добавлено ---
    вот зачем захотелось переписать API? наверное затем, что старый стало трудно поддерживать. так вот, стремись к простоте и постоянству в выборе решений. тогда твой API будет расти без загнивания.
     
    Taktreba нравится это.
  14. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    вот развернул я свой laravel 8 проект в контейнере. накидал самые простые методы возвращения данных из БД.
    Теперь мне нужно продать идею использования laravel для написания апи. Но у меня самый простой запрос через get к контроллеру работает минимум 5 секунд... так я идею не продам )))
    чего так долго? так должно быть? если я создаю пустой index.php в паблике, он отработает мгновенно, значит контейнер настроен правильно.
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.112
    Симпатии:
    1.244
    Адрес:
    там-сям
    это только значит, что у тебя php настроен. а ларавель может тормозить по множеству причин. он использует базу, возможно пытается обратиться к другим серверам за redis или ещё какими ресурсами. возможно файловая система медленная, ведь фреймворк читает сотни файлов. возможно твой комп дохлый, памяти не хватает - он свопит на диск, который тормозной.

    главное, Женя, не валить задачи в кучу. каждая проблема стоит отдельной темы ))) как программист в команде ты должен это знать.
    --- Добавлено ---
    составь чеклист версий и отмечай какие пункты проверены и как.
     
    Taktreba нравится это.
  16. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    сферический конь в ваккуме... нужно смотреть что и как ты накидал....
    а чего бы пустому индексу не работать моментально.. он же пустой, ты запрос на чистом php реализуй, и на ларке и сравни, после этого громкие заявления делай....
     
    TeslaFeo нравится это.
  17. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    какия громкие заявления ты имеешь виду?

    пока не ясно
    booting - 5sec
    application - 2-3 sec..

    прямое подключение к БД работает быстро, что то в bootstrap долго грузиться... ща разберемся )

    сложность в том что ларка установленная из коробки, что бы проверить что увеличивает вермя загрузки, придется все подряд отключать, а отключать вообще не хочется с учетом того что мне кжется, что все что работает из коробки отключать нельзя )
     
    #17 Taktreba, 20 дек 2021
    Последнее редактирование: 20 дек 2021
  18. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    что Ларка работает медленно