Size: a a a

2020 April 03

DP

Daniel Podolsky in Go-go!
Roman Kosiy
можете, пожалуйста, поделиться?)
источник

b

in Go-go!
для го? там же стандартный есть
источник

RK

Roman Kosiy in Go-go!
для го? там же стандартный есть
есть, но хочется чего-то более навороченного
источник

RK

Roman Kosiy in Go-go!
пасиб, посмотрю
источник

RS

Roman Sharkov in Go-go!
вопрос: в каком стиле предпочитаете писать RPC API?

относительный пользователя сессии?
createSession()
joinGroup(group: GroupID)
leaveGroup(group: GroupID)
sendMessage(body: String, to: GroupID|UserID)

или независимый от сессии, где для каждой операции указывается от какого пользователя выполняется операция?
createSession(user: UserID)
joinGroup(user: UserID, group: GroupID)
leaveGroup(user: UserID, group: GroupID)
sendMessage(body: String, sender: UserID, to: GroupID|UserID)

- У первого варианта плюс казалось-бы очевиден: это просто, и без излишеств.
- Однако, у второго варианта, наверное, тоже есть плюс: операции можно выполнять от некого всемогущего debug user'а (в не-release build’е), который обходит авторизацию, что может помочь в дебаге и тестировании.
источник

RS

Roman Sharkov in Go-go!
Roman Sharkov
вопрос: в каком стиле предпочитаете писать RPC API?

относительный пользователя сессии?
createSession()
joinGroup(group: GroupID)
leaveGroup(group: GroupID)
sendMessage(body: String, to: GroupID|UserID)

или независимый от сессии, где для каждой операции указывается от какого пользователя выполняется операция?
createSession(user: UserID)
joinGroup(user: UserID, group: GroupID)
leaveGroup(user: UserID, group: GroupID)
sendMessage(body: String, sender: UserID, to: GroupID|UserID)

- У первого варианта плюс казалось-бы очевиден: это просто, и без излишеств.
- Однако, у второго варианта, наверное, тоже есть плюс: операции можно выполнять от некого всемогущего debug user'а (в не-release build’е), который обходит авторизацию, что может помочь в дебаге и тестировании.
вопрос: в каком стиле предпочитаете писать RPC API?
Анонимный опрос
44%
относительно пользователя сессии
56%
независимо от пользователя сессии
Проголосовало: 32
источник

RS

Roman Sharkov in Go-go!
нечаянно сделал опрос анонимным 🙃
хотелось бы услышать аргументы за/против одного из подходов 🙂
источник

Вy

Вячеслав yaches... in Go-go!
Я проверяю авторизацию в middleware и там же кладу текущего пользователя в контекст. Если какому-то из методов надо получить текущего пользователя, он берет его из контекста
источник

RK

Roman Kosiy in Go-go!
чем больше инфы - тем лучше для отлова багов, логирования, анализа. да и трудно вот абстрактно, если честно, ответить без привязки к месту, в котором используется, итп
источник

RS

Roman Sharkov in Go-go!
Вячеслав yaches
Я проверяю авторизацию в middleware и там же кладу текущего пользователя в контекст. Если какому-то из методов надо получить текущего пользователя, он берет его из контекста
тут скорее разница в том, что во втором подходе мы можем выполнить операцию от имени другого пользователя, а в первом варианте это физически невозможно.

в случае тестирования API - как мы будем проводить интеграционные тесты?
источник

Вy

Вячеслав yaches... in Go-go!
> - Однако, у второго варианта, наверное, тоже есть плюс: операции можно выполнять от некого всемогущего debug user'а (в не-release build’е), который обходит авторизацию, что может помочь в дебаге и тестировании.

В моем проекте так не делаем, но теоретически ничего не мешает обойти авторизацию в middleware. Сами методы не принимают пользователя как аргумент
источник

Вy

Вячеслав yaches... in Go-go!
Почему невозможно?
источник

Вy

Вячеслав yaches... in Go-go!
Возможно, просто чуть более трудоемко
источник

Вy

Вячеслав yaches... in Go-go!
Я же могу вызвать метод, передав ему контекст с любым пользователем внутри
источник

Вy

Вячеслав yaches... in Go-go!
т.е сделать руками то, что обычно делает middleware
источник

Вy

Вячеслав yaches... in Go-go!
Или я чего-то не до конца понимаю?
источник

RS

Roman Sharkov in Go-go!
я вижу 80% за второй вариант, но мало аргументов, почему они не предпочитают первый 😃
источник

AZ

Artem Zheltak in Go-go!
А кто нибудь через GO работал с gpin на rasberry pi?
источник

VS

Vladimir Smagin in Go-go!
там же вроде надо просто иметь доступ на запись в файлы с пинами
источник

VS

Vladimir Smagin in Go-go!
хоть из баша можно работать, хоть из питона
источник