Size: a a a

Node.js — русскоговорящее сообщество

2020 May 03

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Ребят,для чего нужен DAO на примере работы express/postgres ?
dao никак к инструментам(express/postgres) не относится.
По сути это про SRP принцип. Чтобы менять то что касается персистента отдельно от всего остального
источник

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
а потом у нас в текстовом редакторе курсор тормозит на 8-ядерном компе (привет, vsc)
Но только ты не можешь утверждать, что это из-за эксепшенов.
источник

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Пока не проведешь анализ.
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Yury Golikov
Но только ты не можешь утверждать, что это из-за эксепшенов.
безусловно
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Artem Zuev
протокол взаимодействия бека и фронта (более строгий/правильный/феншуйный) - это что-то из области сравнения JS и TS... тоже один "правильнее и феншуйнее", но это не значит, что другой неправильный или вообще ошибочный... просто менее строгий и не более того
👍
источник

ЮВ

Юра Вягочер... in Node.js — русскоговорящее сообщество
Добрый вечер. Такой вопрос, почему sequelize орет что main.addLd не функция. https://pastebin.com/SbhwXwfQ
источник
2020 May 04

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
Виталий
короче ребят, я не понимаю людей, которые свято верят что бизнес ошибка что документ с ид 111 не найден должа иметь код 200
Я считаю, что на запрос
/api/v1/users?id=42
Нужно ответить, например:
• 200 {ok:true, data: {user:{…}}} когда такой юзер есть;
• 200 {error:true, code:'user_not_found'} когда юзера нету;
• 200 {error:true, code:'wrong_auth_cookie'} когда не была выполнена авторизация;
• 404 {error:true, code:'fatal_error', message:'Path /api/v1/users does not exists'} когда версия v1 уже не поддерживается или при любой другой опечатке в запросе (если он всё ещё в пределах /api/*);
• 400 {error:true, code:'fatal_error', message:'Parameter "user_id" is missing'} когда в запрос поданы некорректные параметры (но не их значения!).

То есть, на мой взгяд, код «200» обозначает, что запрос верный и API отработало верно (то есть сам СЕРВИС обслужил запрос), а коды 4xx обозначали бы только то, что API используется неправильно.
Туда же можно воткнуть проверки Content-Type и самого метод (get/post), может юзерагент чекнуть, чтобы поисковики случайно не заходили (им можно отдавать 403 например).

Такая ошибка на фронте обозначала бы ошибку в КОДЕ приложения, или факт того, что приложение нужно обновить/исправить (или сервис сейчас не работает – пусть возвращает 503 если у него база данных отвалилась, например).

Это идеально отделяет их от «отрицательных ответов» – когда нет объекта, нет прав на изменение, попытка сохранить некорректные данные – всё это _нормальные_ запросы к API, которые нормально отработали и вернули нормальный, просто отрицательный результат. Я наоборот не понимаю, с чего это они должны возвращать 404…
источник

AS

Artem Soroka in Node.js — русскоговорящее сообщество
Алексей Клименко
Я считаю, что на запрос
/api/v1/users?id=42
Нужно ответить, например:
• 200 {ok:true, data: {user:{…}}} когда такой юзер есть;
• 200 {error:true, code:'user_not_found'} когда юзера нету;
• 200 {error:true, code:'wrong_auth_cookie'} когда не была выполнена авторизация;
• 404 {error:true, code:'fatal_error', message:'Path /api/v1/users does not exists'} когда версия v1 уже не поддерживается или при любой другой опечатке в запросе (если он всё ещё в пределах /api/*);
• 400 {error:true, code:'fatal_error', message:'Parameter "user_id" is missing'} когда в запрос поданы некорректные параметры (но не их значения!).

То есть, на мой взгяд, код «200» обозначает, что запрос верный и API отработало верно (то есть сам СЕРВИС обслужил запрос), а коды 4xx обозначали бы только то, что API используется неправильно.
Туда же можно воткнуть проверки Content-Type и самого метод (get/post), может юзерагент чекнуть, чтобы поисковики случайно не заходили (им можно отдавать 403 например).

Такая ошибка на фронте обозначала бы ошибку в КОДЕ приложения, или факт того, что приложение нужно обновить/исправить (или сервис сейчас не работает – пусть возвращает 503 если у него база данных отвалилась, например).

Это идеально отделяет их от «отрицательных ответов» – когда нет объекта, нет прав на изменение, попытка сохранить некорректные данные – всё это _нормальные_ запросы к API, которые нормально отработали и вернули нормальный, просто отрицательный результат. Я наоборот не понимаю, с чего это они должны возвращать 404…
Можно определять результат выполнения запроса разбирая только заголовки
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Алексей Клименко
Я считаю, что на запрос
/api/v1/users?id=42
Нужно ответить, например:
• 200 {ok:true, data: {user:{…}}} когда такой юзер есть;
• 200 {error:true, code:'user_not_found'} когда юзера нету;
• 200 {error:true, code:'wrong_auth_cookie'} когда не была выполнена авторизация;
• 404 {error:true, code:'fatal_error', message:'Path /api/v1/users does not exists'} когда версия v1 уже не поддерживается или при любой другой опечатке в запросе (если он всё ещё в пределах /api/*);
• 400 {error:true, code:'fatal_error', message:'Parameter "user_id" is missing'} когда в запрос поданы некорректные параметры (но не их значения!).

То есть, на мой взгяд, код «200» обозначает, что запрос верный и API отработало верно (то есть сам СЕРВИС обслужил запрос), а коды 4xx обозначали бы только то, что API используется неправильно.
Туда же можно воткнуть проверки Content-Type и самого метод (get/post), может юзерагент чекнуть, чтобы поисковики случайно не заходили (им можно отдавать 403 например).

Такая ошибка на фронте обозначала бы ошибку в КОДЕ приложения, или факт того, что приложение нужно обновить/исправить (или сервис сейчас не работает – пусть возвращает 503 если у него база данных отвалилась, например).

Это идеально отделяет их от «отрицательных ответов» – когда нет объекта, нет прав на изменение, попытка сохранить некорректные данные – всё это _нормальные_ запросы к API, которые нормально отработали и вернули нормальный, просто отрицательный результат. Я наоборот не понимаю, с чего это они должны возвращать 404…
Ну понимаешь, тебе сейчас скажут, что при получении 404 надо потом еще проверить тело ответа, в котором и детализировать, а где именно ошибка - т.е. по сути одна хрень, нужно парсить и читать тело ответа ;)
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Artem Soroka
Можно определять результат выполнения запроса разбирая только заголовки
сделал запрос, к примеру GET /api/v1/user/1234 - и получил 404 ошибку...
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
и как ты поймешь, что это опечатка в адресе (должен быть users), а не "такого юзера нет"?
источник

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
Artem Zuev
и как ты поймешь, что это опечатка в адресе (должен быть users), а не "такого юзера нет"?
Так я и сказал, если бы «такого юзера не было» – пришло бы 200 и код ошибки.
источник

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
А, это не мне.
источник

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
Artem Zuev
Ну понимаешь, тебе сейчас скажут, что при получении 404 надо потом еще проверить тело ответа, в котором и детализировать, а где именно ошибка - т.е. по сути одна хрень, нужно парсить и читать тело ответа ;)
Так тело ответа так и так пришлось бы читать!

Как будто если бы юзер был – мне хватило только заголовков.
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Любой ответ от бека должен быть таким, чтобы фронт мог по ответу понять результат и причину такого ответа, а такую информацию можно получить детально только по телу ответа... А если читать и парсить ответ - то код ответа вообще начинает играть второстепенную роль (разве что в случаях, когда стоит нгинкс и по каким-то причинам отвечает вместо бека)
источник

AS

Artem Soroka in Node.js — русскоговорящее сообщество
Artem Zuev
и как ты поймешь, что это опечатка в адресе (должен быть users), а не "такого юзера нет"?
А вы без документации апи разрабатываете ?
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Artem Soroka
А вы без документации апи разрабатываете ?
А при чем тут дока... Мы сейчас говорим о причинах, почему строгое следование заголовкам не является достаточным
источник

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
Artem Zuev
Любой ответ от бека должен быть таким, чтобы фронт мог по ответу понять результат и причину такого ответа, а такую информацию можно получить детально только по телу ответа... А если читать и парсить ответ - то код ответа вообще начинает играть второстепенную роль (разве что в случаях, когда стоит нгинкс и по каким-то причинам отвечает вместо бека)
> (разве что в случаях, когда стоит нгинкс и по каким-то причинам отвечает вместо бека)

Во-от. Или ошибка в обращении к API – её тоже можно отдавать сервисом.
Чтобы там в дабаггере сразу красный кружок высветился, и функция обработки ответа вообще с этим ничего сделать не сможет – ведь так и не понятно, есть такой юзер или нет, раз сервис отказался запрос обрабатывать.
источник

АК

Алексей Клименко... in Node.js — русскоговорящее сообщество
Artem Soroka
А вы без документации апи разрабатываете ?
Если API _очень_ простое (вот прям запрос-ответ, даже без состояния) типа поллинга чего-то – то может и можно вообще одними статусами обойтись.

Но если это JSON-апи – то можно сделать ответ сколь угодно подробным!
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Алексей Клименко
> (разве что в случаях, когда стоит нгинкс и по каким-то причинам отвечает вместо бека)

Во-от. Или ошибка в обращении к API – её тоже можно отдавать сервисом.
Чтобы там в дабаггере сразу красный кружок высветился, и функция обработки ответа вообще с этим ничего сделать не сможет – ведь так и не понятно, есть такой юзер или нет, раз сервис отказался запрос обрабатывать.
=) я понимаю, к чему ты клонишь... и в некоторой степени согласен, вариант, когда любой код, отличный от 20Х сигнализирует о проблемах ВНЕ сервиса бека... а сам бек, когда корректно отрабатывает формирует ответ с содержанием ошибки - это вполне допустимая практика
источник