170 похожих чатов

Ребят, привет. Посоветуйте по проектированию API. Было несколько отдельных проектов,

теперь они сьезжаются, и нужно многое переосмыслить.
1️⃣) Предполагается иметь три уровня доступа к данным : публичный - для веб приложений, самый минимум только необходимой информации, для сторонних клиентов - по авторизации, только данные, представляющие ценность, и админитративный - наиболее полные данные с метаданными, вроде истории изменений редакторами. Имеет ли смысл явно делить это на уровне URL, если модели используются одни и те же, то есть api.site.com/admin/items, api.sute.com/v1/[api-code]/items ... , api.com/public/items-for-webapp , при условии, что и апи, и вебприложения делает одна компания? Имеет ли смысл вводить версионирование для чего-то кроме апи для сторонних пользователей?
2️⃣) В привычных мне рест-апишках роуты строились банально: сайт/[множество]/[идентификатор]. Теперь реализовали возможность получать статистику по множеству /[множество]/статистика[1,2...] , корректно ли это? Ведь статистика по множеству не возвращает члены множества, стоит ли её тогда выделить уровнем выше? апи.ком/статистика/[множество]/предмет-отчёта - например.
3️⃣) Естественно, я уже посмотрел несколько докладов с конференций на тему, и в одном из них звучала рекомендация препочитать snake_case для роутов апи кемелКейсу или ПаскальКейсу. В моём апи сейчас используются кебаб-кейс, есть причины изменить это?

2 ответов

18 просмотров

по третьему пункту - в урлах лучше не юзать большие буквы - потому-что некоторым серверам на винде пофиг на регистр букв. Это вас конечно может не касаться - но как бы лучше за привычку взять) к апям не относиться - но сеошники говорят лучше урлы через тире писать

GraphQL вам в помощь! :)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта