Size: a a a

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

2020 May 04

L

Looch in Node.js — русскоговорящее сообщество
z̛e͏́͠r͜c҉
Погоди погоди 😁
Физический роутер расшифровал ваш трафик, подменил заголовки и ответ и вернул тебе ?

Извини какое то восстание машин
там была ситуация такая что нам нужно было задеплоить все на стороне клиента, эти сервисы не смотрели во внешний 'интернет' и были только для внутр использования
источник

L

Looch in Node.js — русскоговорящее сообщество
может что-то накосячили во время настройки сети и тд
источник

PS

Pavel Shakhov (pongo... 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…
Но ведь при твоём 400 апи все равно верно отрабатывает.
источник

DP

Defragmented Panda in Node.js — русскоговорящее сообщество
я использую nodejs как примитивный веб сервер (http)

Когда я получаю запрос я хочу отдавать 2 куска данных. Сам шаблон (хтмл, стили, скрипты) и текст (который я потом хочу вставить в одну из div на сайте)

я не хочу парсить шаблон в ноде, не хочу резать шаблон на 2 файла для склейки потом.

Я так понимаю единственный вариант это добавлять текст в конце ответа сервера (просто склеить две строки?) и потом в браузере у пользователя джаваскриптом вставлять текст в нужное  место в DOM?

Как вообще это решают обычно
источник

НК

Назар Калитюк... in Node.js — русскоговорящее сообщество
Defragmented Panda
я использую nodejs как примитивный веб сервер (http)

Когда я получаю запрос я хочу отдавать 2 куска данных. Сам шаблон (хтмл, стили, скрипты) и текст (который я потом хочу вставить в одну из div на сайте)

я не хочу парсить шаблон в ноде, не хочу резать шаблон на 2 файла для склейки потом.

Я так понимаю единственный вариант это добавлять текст в конце ответа сервера (просто склеить две строки?) и потом в браузере у пользователя джаваскриптом вставлять текст в нужное  место в DOM?

Как вообще это решают обычно
почему бы сразу не вставить?
источник

DP

Defragmented Panda in Node.js — русскоговорящее сообщество
Назар Калитюк
почему бы сразу не вставить?
Т.е. после загрузки файла в nodejs распарсить его и изменить до нужного до отправки в браузер?
источник

НК

Назар Калитюк... in Node.js — русскоговорящее сообщество
Defragmented Panda
Т.е. после загрузки файла в nodejs распарсить его и изменить до нужного до отправки в браузер?
да, я бы так наверное сделал
источник

НК

Назар Калитюк... in Node.js — русскоговорящее сообщество
или может вставить джс, который сразу на клиенте поменяет код страницы. Но отдавать нужно 1 готовый файл html.
источник

DP

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

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Artem Soroka
Что вам в 404 не понятно? Страница или документ не найден
Разница именно в этом ИЛИ
Это две разные ситуации, и реагировать на них надо по-разному
Ответ на вопрос, откуда в url взялся users вместо user - пользователь вбивал адрес в адресную строку руками
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Виталий
После такого беседовать не о чем более, удачи.
Почему ты делаешь не то, что говоришь? Ты уж определись, вести дискуссию, и пытаться найти аргументы, или не вести и молчать ;)
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Назар Калитюк
200 это когда все отработало как нужно. Там никак не должно быть ошибки внутри
Такое мнение, как мне кажется, следствие привычки возвращать ошибку через эксепшны
Но это не всегда верно. Возможно, надо различать исключение (ошибка в адресной строке) и ошибку данных (пользователя нет). Второе - штатная ситуация, а никак не исключение
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Artem Soroka
Ок, давайте покидаем друг другу ссылки на разные апи ))

The URI requested is invalid or the resource requested, such as a user, does not exist

https://developer.twitter.com/en/docs/basics/response-codes
Я начал с того, что вопрос холиварный. Считаю, что здесь нет однозначного правила, что вот так правильно, а вот так нет
Гугл, например, в публичных апи при запросе несуществующей сущности отдаёт не 200, а (как минимум в некоторых) непубличных - 200. То есть для остального мира - подчиняются условным канонам, для себя - делают как им самим удобнее

А позиция некоторых участников дискуссии, которые считают свой вариант единственно верным, а оппонентам отказывают в наличии опыта/мозга/души - это аналог войны остроконечников и тупоконечников
источник

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Не холивара ради, а познания для.
Объясните зачем использовать для ошибок приложения - коды http? Какое это преимущество дает перед тем, чтобы ошибки указывать в теле. Просто я вижу только ограничение - ибо количество кодов http ограниченное количество и описаны они довольно абстрактно и скудно.
источник

VA

Veaceslav Artiom in Node.js — русскоговорящее сообщество
Yury Golikov
Не холивара ради, а познания для.
Объясните зачем использовать для ошибок приложения - коды http? Какое это преимущество дает перед тем, чтобы ошибки указывать в теле. Просто я вижу только ограничение - ибо количество кодов http ограниченное количество и описаны они довольно абстрактно и скудно.
Привет, ну как минимум есть стандарты которые указывают какие коды когда нужно использовать, это первое. Второе и достаточно частое, это ошибки которые идут с переводом, то есть если ты запросил что-то на с рус языком тогда тебе и ошибки прилетят с рус и в этом случае ну много легче понять что же там не так, ты что-то не то отправил, есть дубликат, есть ошибка сервера и так далее.
источник

VA

Veaceslav Artiom in Node.js — русскоговорящее сообщество
Yury Golikov
Не холивара ради, а познания для.
Объясните зачем использовать для ошибок приложения - коды http? Какое это преимущество дает перед тем, чтобы ошибки указывать в теле. Просто я вижу только ограничение - ибо количество кодов http ограниченное количество и описаны они довольно абстрактно и скудно.
Не всегда нужно писать ошибки прям безумно ясно, могут использовать против тебя. Четкие обьеанения по моему мнению должны быть только в дев моде, а на проде использовать только то что дают коды http.
источник

KG

Kool Guy in Node.js — русскоговорящее сообщество
Yury Golikov
Не холивара ради, а познания для.
Объясните зачем использовать для ошибок приложения - коды http? Какое это преимущество дает перед тем, чтобы ошибки указывать в теле. Просто я вижу только ограничение - ибо количество кодов http ограниченное количество и описаны они довольно абстрактно и скудно.
можно обрабатывать ошибку, не читая тело ответа
источник

KG

Kool Guy in Node.js — русскоговорящее сообщество
на клиенте, разумеется
источник

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Veaceslav Artiom
Привет, ну как минимум есть стандарты которые указывают какие коды когда нужно использовать, это первое. Второе и достаточно частое, это ошибки которые идут с переводом, то есть если ты запросил что-то на с рус языком тогда тебе и ошибки прилетят с рус и в этом случае ну много легче понять что же там не так, ты что-то не то отправил, есть дубликат, есть ошибка сервера и так далее.
1. Ок, стандарт - аргумент. Но вот разве холивар выше не показывает, что этот стандарт не очень подходит для реализации ошибок приложения. Те стандарт хорош тем, что разные люди зная этот стандарт могут понять, что значит конкретная ошибка. Но как мы видим разные люди понимают этот стандарт по-разному. Что еще хуже ибо  неоднозначность. Лучше уж однозначно, но менее стандартно.
Все это конечно напоминает культ карго.
2. Я не понял, тк это вроде мало относится к http кодам. Я вот не видел, чтобы ошибки http api переводили, обычно есть код ошибки и описание на английском. А там уже клиент апи - может перевести его.
источник

YG

Yury Golikov in Node.js — русскоговорящее сообщество
Veaceslav Artiom
Не всегда нужно писать ошибки прям безумно ясно, могут использовать против тебя. Четкие обьеанения по моему мнению должны быть только в дев моде, а на проде использовать только то что дают коды http.
Вот это вообще не понятно. Объясните чем по вашему - четкость, ясность, прозрачность, понятность хуже чем размытость, неявность, ограниченность?
источник