Меню

Ошибка клиента 404 при выполнении запроса к ресурсу

   it_looser

09.04.21 — 17:19

Собственно сабж. При попытке обновления типовой БП на последний релиз из режима предприятия выдает ошибку 404. ИТС действующий, истекает в июне. В режиме конфигуратора через автоматический поиск обновлений (оставляю галочку только на сайт 1С) спокойно находит и обновляет конфу. https://ibb.co/6RXH3pk ссылка на текст ошибки. Есть один ньюанс, почему то когда по ошибке в режиме предприятия нажимаю ссылку обратиться в техподдержку, отправляет на украинский сайт 1С! Сталкивался кто нибудь? И в ЖР кстати тоже вижу что лезет в режиме предприятия на укр домен.

   it_looser

1 — 09.04.21 — 17:19

   Затейник

2 — 09.04.21 — 17:20

Обновите через конфигуратор.

   lubitelxml

3 — 09.04.21 — 17:21

(2) +1

   d_monah

4 — 09.04.21 — 17:23

(0) Это у всех лузеров так.Смени ник)

   it_looser

5 — 09.04.21 — 17:25

Через конфигуратор то обновил. Бухгалтер просто хочет сама обновлять… И там не одна конфа, зачем человеку доставлять трудности, если у нее все они типовые.

   d_monah

6 — 09.04.21 — 17:26

(5) Бухгалтер должен страдать,платить и страдать.Такова саромятная правда жизни

   it_looser

7 — 09.04.21 — 17:30

(6) )))))) а по делу если?

   25-11

8 — 09.04.21 — 17:31

(7) Установите обновлятор.

   mikecool

9 — 09.04.21 — 17:34

(7) отладь, не помню точно — но при создании бекапа 1с лезет в недоступный каталог, отчего падает

   it_looser

10 — 09.04.21 — 17:34

(8) Тоже не выход. 1500 за него не жалко, но зачем буху это надо, если все до этого обновлялось в штатном режиме, и тут непонятно что произошло.

   Winnie Buh

11 — 09.04.21 — 17:34

1. см. региональные параметры ИБ и сеанса в 1С

2. см. региональные настройки Windows

наверняка найдется подсказка

   it_looser

12 — 09.04.21 — 17:34

Короче никто не сталкивался?

   mikecool

13 — 09.04.21 — 17:35

+9 перед обновлением есть доп настройки, в которых и указывается каталог бекапа

   mikecool

14 — 09.04.21 — 17:35

(12) ты бот?

   d_monah

15 — 09.04.21 — 17:36

(7) Я те в пнд отвечу,в птн лениво))

   it_looser

16 — 09.04.21 — 17:38

(11) 1. см. региональные параметры ИБ и сеанса в 1С

это где?

2. см. региональные настройки Windows

Тут все норм

   it_looser

17 — 09.04.21 — 17:38

(14) разве похож?

   it_looser

18 — 09.04.21 — 17:41

+ (16) В конфигураторе в региональных настройках ИБ стоит Россия

   mikecool

19 — 09.04.21 — 17:41

(17) тогда писатель? см 9 и 13

   МимохожийОднако

20 — 09.04.21 — 17:43

(10) Для одной базы обновлятор бесплатный )

   Shadawn

21 — 09.04.21 — 17:44

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

   it_looser

22 — 09.04.21 — 17:46

(19) Да не нужен каталог бэкапа, нужно обновление с портала 1С! Лезет почему то в укр.

   it_looser

23 — 09.04.21 — 17:47

+ (20) (21) не будет бух обновлять через него… ей раньше было достаточно что сама конфа покричала что доступно обновление, она нажимает обновить и идет пить кофе.

   Winnie Buh

24 — 09.04.21 — 17:50

(18) покажи окно со справкой о программе

   it_looser

25 — 09.04.21 — 17:56

   it_looser

26 — 09.04.21 — 17:58

Кстати если перенести базу на другой сервер, но в той же локальной сети, то спокойно дает обновить из режима предприятия…. дело где то в винде блин. Кстати ОС server 2008 r2

   it_looser

27 — 09.04.21 — 19:04

UP

   Winnie Buh

28 — 09.04.21 — 19:11

(25) с 1С все Ок, теперь что с региональными настройками  Windows?

   it_looser

29 — 09.04.21 — 19:22

   it_looser

30 — 09.04.21 — 19:23

Да везде все нормально

   xXeNoNx

31 — 09.04.21 — 19:28

напиши свой обновлятор. 5 строчек кода

   Сергиус

32 — 09.04.21 — 19:34

(0)[Бухгалтер просто хочет сама обновлять]

Вот это зря..обновит как-нибудь криво, на тебя же бочки будет катить. Лучше сам делай через Конфигуратор, через Предприятие чревато.

   Winnie Buh

33 — 09.04.21 — 19:36

(29) база на этой же машине или по сети на другой?

   hhhh

34 — 09.04.21 — 19:40

(30) может это только в этот раз? А в следующий прекрасно обновится.

   it_looser

35 — 09.04.21 — 19:42

(33) на этой же

   it_looser

36 — 09.04.21 — 19:43

(34) это уже с месяц как длится, просто и мне и ей надоело друг другу звонить… Раньше она сама обновляла, я не штатный админ, не могу быть на месте, и просит все таки починить чтобы сама обновляла

   it_looser

37 — 09.04.21 — 19:44

До понедельника если гуру мисты не подскажут, буду 1С долбить или франча который ИТС продал, хотя все думаю отправят к настройкам винды

   Сергиус

38 — 09.04.21 — 20:01

(36)если ты не штатный админ, тем более не твоя проблема. А так, если уж хочется поразбираться, ставить фидлер и смотри куда 1с ломится в этот момент.

   Сергиус

39 — 09.04.21 — 20:03

+(38)А для начала кэш базы бы почистил, если еще не делал.

   it_looser

40 — 10.04.21 — 08:10

(39) Я базу под своим профилем на этом сервере подключал и пытался через предприятие тоже обновлять. Дело не в кэше.

1С вот куда ломится: Ошибка при получении файла дистрибутива конфигурации (https://dl03.1c.eu/public/file/tmplts/get/e0b1f86d-8bb3-4231-97b9-c44e44522c73). Ошибка клиента (404) при выполнении запроса к ресурсу (https://dl03.1c.eu/public/file/tmplts/get/e0b1f86d-8bb3-4231-97b9-c44e44522c73). Видно же что на укр.

   Фрэнки

41 — 10.04.21 — 09:54

Вообще-то там есть место, куда вписывается и сохраняется место поиска обновлений. В конфигураторе оно видно в момент показа окошка с подтверждением на поиск обновления.

   Фрэнки

42 — 10.04.21 — 09:55

Откуда строчки поиска тянет при поиске обновлений из Предприятие — не проверял

   Фрэнки

43 — 10.04.21 — 09:58

Но если для самой базы БП 3 , к примеру , на окне поиска обновлений в Предприятии как-то не очень видно, откуда берет строки. Но патчи откуда-то берет, даже не смотря на то, что в конфигураторе очищен поиск обновления через инет.

   Фрэнки

44 — 10.04.21 — 10:00

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

Т.е. просто перестановить платформу с указанием явным способом, что русская платформа, а не по системным.

   it_looser

45 — 10.04.21 — 10:10

(44) Во время обновления позавчера БП просила обновить и платформу. Я скачал ее с сайта релизес руками, и установил, поставив вместо системные настройки русские, а потом опять попытался обновить через предприятие, не помогло. Предлагаешь снести вообще все версии платформ? Их там установлено много (по мере автоматических обновлений), и установить все с нуля?

   Winnie Buh

46 — 10.04.21 — 10:34

(40) dl03.1c.eu — домен EU, это точно для Украины.

для РФ должно быть dl03.1c.ru,

как понимаю, если в url вручную поменять»EU» на «RU», то по полученной ссылке скачается нужный дистрибутив…

занятный глюк

на компе случаем не устанавливался BAF / BAS?

   Winnie Buh

47 — 10.04.21 — 10:37

(44) если бы неправильно определялся язык, то в интерфейсе бы были надписи не на русском, но попробовать конечно можно…

   Фрэнки

48 — 10.04.21 — 10:40

(45) Как минимум, хуже не будет, а все остальные, которые не актуальные уже — только место на диске занимают и реестре мусорят.

Говорю же, в порядке бреда…

Но ведь еще можно попробовать тоже самое на другом «чистом» компе, но этой базой. Она же файловая, хотя на проф лицензии, насколько по обсуждению можно судить.

   Winnie Buh

49 — 10.04.21 — 11:09

ещё мысль

открой в конфигураторе Конфигурация — Поддержка — Обновить конфигурацию

— Поиск доступных обновлений

в окне «Искать обновления в каталогах» какие ресурсы указаны?

   Winnie Buh

50 — 10.04.21 — 11:59

в списке должна остаться только одна запись — downloads.v8.1c.ru/tmplts/

все остальные URL надо удалить

https://online-ufa.ru/images/downloads-1c-01.png

   it_looser

51 — 10.04.21 — 12:24

(50) Тут все норм, и через конфигуратор обновляет спокойно…     https://ibb.co/6n4dx24

   it_looser

52 — 10.04.21 — 12:25

(48) На другом компе нормально обновляется… Говорю же дело в винде походу, понять не могу где(

   acanta

53 — 10.04.21 — 12:32

Реестр?

   it_looser

54 — 10.04.21 — 13:03

(53) Знать бы где

   Фрэнки

55 — 10.04.21 — 13:17

https://www.ccleaner.com/ru-ru

можно и деинсталить, и чистить, в том числе, реестр

   it_looser

56 — 10.04.21 — 17:02

(55) да это все фигня

   ansh15

57 — 10.04.21 — 19:09

Из ИТС:

»

ExternalResourcesMode

Данный параметр определяет состав используемых служебных ресурсов сети Интернет и некоторые особенности поведения системы.

Параметр может принимать следующие значения:

● D ‑ значение по умолчанию, при этом система функционирует следующим образом:

● система программного лицензирования платформы и конфигураций использует сервера, расположенные в России;

● при использовании команд меню Справка ‑ Информация в Интернете происходит обращение к российским ресурсам;

● поддерживается регистрация в системе взаимодействия;

● поддерживается использование специального сервиса фирмы «1С» для рассылки PUSH-уведомлений.

● A ‑ альтернативный список служебных ресурсов. При этом система функционирует следующим образом:

● система программного лицензирования платформы и конфигураций использует сервера, расположенные в Европе;

● при использовании команд меню Справка ‑ Информация в Интернете происходит обращение к европейским ресурсам;»

Параметр находится в conf.cfg.

   it_looser

58 — 12.04.21 — 06:21

(57) Спасибо огромное!!! Стоял почему то параметр А.

   SleepyHead

59 — 12.04.21 — 11:41

(7) Купите обновлятор.

   Voblhned

60 — 11.08.21 — 09:34

(58) стоит A сменить на D ?

  

   Voblhned

61 — 11.08.21 — 09:35

(59) если не удастся победить, то похоже придется

  

Vstur

62 — 11.08.21 — 09:56

(5) тогда это только ее проблемы, если сама….

HTTP: Not found Ошибка при выполнении запроса GET к ресурсу

Подобная ошибка возникает при ручной публикации 1С базы на веб-сервере apache в случае, когда в Alias указывают на одну и ту же директорию.

В этом случае работает последняя, а другие вышестоящие  выдают ошибку «Ошибка при выполнении запроса GET к ресурсу».

Хотя файлы «.vrd» имеют различные имена и внутри корректны, этого не достаточно для корректной работы опубликованной информационной базы.

Пример ошибочной настройки

# 1c publication
Alias "/BAZA" "C:/www/"
<Directory "C:/www/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/www/default.vrd"
</Directory>
Alias "/BAZA2" "C:/www"
<Directory "C:/www">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/www/BAZA2.vrd"
</Directory>

# 1c publication

Вариант исправления

Alias "/BAZA2" "C:/www/2"
<Directory "C:/www/2">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/www/2/BAZA2.vrd"
</Directory>

  • Создаете другую директорию и переносите файл vrd в него
  • Далее следует перезапустить службу вэб-сервера и проверить работоспособность обеих баз

Другой причиной может быть отсутствие прав у службы под которой работает apache к данной директории, указанному файлу,а также отсутствие любого из них  (если не системная).

Любые издержки на рекламную кампанию:
— больше, чем может позволить себе клиент;
— меньше, чем ожидали люди из творческого отдела;
— примерно такие, которых с ужасом опасались бухгалтеры.

Ошибка 404, либо Error 404 Not Found — ошибка, которая появляется, если браузеру не удалось обнаружить на сервере указанный URL.

Страница 404.

Сообщение об ошибке 404

Что означает ответ 404

Error 404 Not Found отображается по-разному: «HTTP 404 не найден», «Ошибка 404 Not Found», «404 Страница не найдена». Смысл надписи всегда остаётся тем же: страница отсутствует либо просто не работает. Not Found в переводе означает «не найдено».

Ошибка 404 — классический код ответа по протоколу HTTP. Он свидетельствует, что связь с сервером установлена, но информации по заданному запросу нет.

Однако если просто ввести в поисковую строку произвольный набор символов, то браузер не покажет ошибку 404 Not Found — появится сообщение, что установить соединение с конкретным сервером невозможно.

Разберёмся в техническом формировании ответа Error 404 Not Found.

Техническая сторона вопроса. При связи по HTTP браузер запрашивает указанный URL и ждёт цифрового ответа. То есть любой запрос пользователя направляется на сервер размещения искомого сайта. Когда браузеру удаётся связаться с сервером, он получает кодированный ответ. Если запрос корректный и страница найдена, отправляется ответ с кодом 200 OK, что соответствует благополучной загрузке. При отсутствии страницы отправляется ответ об ошибке.

Что значит код «404». В ответе 404 первая четвёрка указывает на то, что запрос был чрезмерно длительным или в самом адресе была ошибка. Ноль предполагает синтаксическую неточность. Завершающая цифра кода отображает конкретную причину ошибки — «4» означает отсутствие данной ссылки.

Какие ещё ошибки бывают. Ошибку 404 не нужно путать с другими ответами, которые указывают на невозможность связи с сервером. Например, ошибка 403 сообщает, что доступ к URL ограничен, а ответ «Сервер не найден» свидетельствует, что браузер не смог обнаружить место размещения сайта.

Страница 404 от Google.

Google на 404 странице сообщает о возможных причинах ошибки

Причины ошибки

Причины, по которым HTTP возвращает ответ 404 Not Found:

  • Неверный адрес. К примеру, при ручном наборе пользователь допустил опечатку в URL либо ссылка ведёт на несуществующую страницу.
  • Битая ссылка. Это нерабочий URL, который никуда не ведёт. Данный вариант иногда возникает при внутренней перелинковке. К примеру, раньше страница существовала, а потом её удалили и забыли убрать ссылку.
  • Удалённая страница. Когда пользователь попытается перейти на удалённую с сервера страницу, он также увидит ошибку 404. Ссылка для перехода может сохраниться в браузерных закладках или на сторонних ресурсах.
  • Неправильный редирект на страницу с изменённым адресом. Допустим, в процессе редизайна URL изменили, но оставили без внимания связанные ссылки.
  • Неполадки на сервере. Это самый редкий вариант.

В большинстве ситуаций ошибка 404 отображается, когда не удаётся обнаружить нужную страницу на доступном сервере.

Несуществующая страница на сайте.

Причины отсутствия страницы на сайте бывают разными

Возможные последствия для сайта

Нужно ли считать 404 ошибку опасной для сайтов? Кажется, что нет ничего плохого в том, что пользователь не смог открыть одну веб-страницу. Однако если такая ситуация будет повторяться регулярно, это чревато оттоком аудитории. Одни пользователи решат, что сайт вовсе не существует. Другие подумают, что лучше не заходить на сайт, который работает с ошибками. Третьи будут игнорировать ресурс, на котором не смогли получить обещанную информацию.

Поисковые системы относятся к Not Found более лояльно. Например, Google отмечает, что 404 страницы не влияют на рейтинг. Но если при индексации роботы будут находить все больше ошибочных страниц, вряд ли это приведёт к более высокому ранжированию.

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

Как выявить ошибку

На небольшом ресурсе легко проверить работоспособность ссылок вручную. Но если на сайте сотни и тысячи страниц, без дополнительного софта не обойтись. Есть немало сервисов и программ, позволяющих находить битые ссылки. Рассмотрим некоторые из них.

Search Console Google

Консоль поиска Google позволяет находить страницы с ошибкой 404 за несколько кликов:

  1. Войдите в учётную запись Google и перейдите в Search Console.
  2. Откройте раздел «Ошибки сканирования» → «Диагностика».
  3. Кликните на «Not Found».

Чтобы получить список страниц с ошибками, подтвердите права на ресурс — добавьте проверочную запись TXT в записи DNS регистратора домена. Такая запись не повлияет на работу сайта. Подробнее о процедуре подтверждения, читайте в справке Google.

Интерфейс Search Console Google.

Для использования Search Console Google нужно подтвердить свои права на сайт

Яндекс Вебмастер

Сервис для вебмастеров от Яндекса поможет быстро найти все ошибки 404:

  1. Откройте Вебмастер после авторизации в Яндекс-аккаунте.
  2. Выберите «Индексирование» → «Доступные для поиска страницы» → «Исключённые страницы».
  3. В выданном списке выберите фильтр «Ошибка HTTP: 404».

Чтобы использовать Яндекс.Вебмастер, также нужно подтвердить право владения сайтом — добавить метатег в HTML-код главной страницы.

Главная страница Яндекс.Вебмастер.

Для входа в Вебмастер авторизуйтесь в Яндексе

Screaming Frog

Для начала загрузите и установите программу на компьютер. После запуска добавьте URL проверяемого сайта и начните поиск проблем. Неработающие ссылки можно искать даже в бесплатной версии.

Сервис Screaming Frog.

Инструмент SEO-паук в Screaming Frog помогает найти технические неисправности сайта

SiteAnalyzer

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

Страница загрузки SiteAnalyzer.

SiteAnalyzer бесплатно найдёт неработающие URL

Как исправить ошибку Not Found

Выбор конкретного решения зависит от причины ошибки:

  1. Ссылка ведёт в никуда из-за неверного URL. Для решения проблемы замените ошибочную ссылку на правильный адрес, чтобы сервер отдавал код 200 OK.
  2. Битая ссылка. Подобная ситуация не редкость при внутренней перелинковке страниц. К примеру, ссылка есть, а саму страницу давно удалили. Решений два: удалить ссылку или заменить её на другую.

Удалять и менять ссылки вручную удобно только на небольших сайтах. Исправление ошибок на крупных порталах лучше автоматизировать. Например, с помощью специальных плагинов для внутренней перелинковки (Terms Description, Dagon Design Sitemap Generator) и для автоматического формирования адресов страниц (Cyr-To-Lat).

Чтобы ошибки 404 появлялись как можно реже, достаточно соблюдать простые рекомендации:

  • Не присваивайте сложные адреса основным разделам сайта. Это снизит число ошибок, связанных с опечатками в URL.
  • Не меняйте адреса страниц слишком часто. Это неудобно для пользователей и вводит в заблуждение поисковых роботов.
  • Размещайте сайт на надёжном сервере. Это предотвратит ошибки, возникающие из-за неработоспособности сервера.

Мы разобрались, как найти и исправить ошибки Not Found внутри сайта. Но неработающая ссылка может быть расположена и на стороннем ресурсе. Допустим, когда-то на другом сайте разместили рекламную публикацию со ссылкой на определённую страницу. Спустя какое-то время страницу удалили. В этом случае появится ошибка 404. Устранить её можно, связавшись с администрацией ссылающегося сайта. Если же удалить/исправить ссылку нельзя, постарайтесь использовать ошибку с выгодой.

Как сделать страницу 404 полезной

Грамотно оформленная страница с ошибкой Error 404 Not Found — действенный инструмент конвертации посетителей. Ограничений по использованию страницы с ошибкой 404 нет. При этом практически все CMS позволяют настраивать дизайн этой страницы.

Что публиковать на странице 404:

  • меню с кликабельными ссылками;
  • ссылку на главную страницу;
  • анонс последних публикаций;
  • контакты для обратной связи.

При оформлении страницы-ошибки желательно опираться на рекомендации поисковиков:

  • Яндекс настоятельно рекомендует, чтобы страница контрастировала с основным содержанием сайта — иные цвета, другие графические приёмы либо их отсутствие. Необходимо чётко и понятно объяснить пользователю, что запрошенной страницы не существует и предложить другое решение.
  • Google советует придерживаться единого стиля оформления. Но также рекомендует понятно рассказать об ошибке и предложить полезные материалы.

Главное — по возможности отказаться от стандартной страницы 404. Подумайте, как привлечь внимание пользователя. Расскажите ему об отсутствии искомой страницы и предложите взамен что-то полезное или интересное.

Примеры оформления страниц 404

Designzillas

Мультяшная страница креативной студии привлекает внимание и её хочется досмотреть до конца. Если прокрутить страницу, можно увидеть, как из яйца вылупится дракон. При этом на странице есть ссылки на все основные разделы сайта.

404 страница на сайте Designzillas

Меню на сайте Designzillas есть и на 404 странице

Domenart Studio

Веб-студия «Домен АРТ» использует красочную страницу 404, оформленную в единой стилистике ресурса. Заблудившимся пользователям предлагают попробовать ещё раз ввести адрес или перейти в нужный раздел.

Страница 404 Domenart Studio.

Контакты, поиск, меню — и всё это на 404 странице Domenart Studio

E-co

«Эко Пауэр», дистрибьютор производителя источников питания, демонстрирует короткое замыкание как символ ошибки. Посетителям предлагают перейти на главную.

Ошибка 404 «Эко Пауэр»

Ошибка 404 «Эко Пауэр» выглядит как страница входа

Дом со всем

Компания «Дом со всем», занимающаяся бурением скважин, разместила на странице 404 свои контакты и перечень услуг. Со страницы можно перейти в любой раздел сайта или заказать обратный звонок. С таким наполнением посетителю не нужно искать дополнительную информацию где-то ещё.

Страница 404 «Дом со всем».

Компания «Дом со всем» предлагает заказать обратный звонок

Kualo

Страница 404 на веб-хостинге Kualo может заставить пользователя забыть, зачем он сюда пришёл. Увлекательная игра притягивает внимание. В конце игры посетителю предлагают посмотреть сайт хостинга.

Cтраница 404 Kualo

На странице Kualo можно просто поиграть и заработать скидки

Рано или поздно с ошибкой 404 сталкивается большинство сайтов. При регулярной проверке можно своевременно исправить неработающие ссылки, чтобы в ответ пользователи получали код 200 OK. Но для крупного ресурса лучше настроить оригинальную страницу, которая будет отображаться при появлении ошибки Not Found и подскажет посетителям, что делать дальше.

Главные мысли

Ошибка 404 это

A 4XX error code means error from the client side.
As you request a static resource as an image or a html page, returning a 404 response makes sense as :

The HTTP 404 Not Found client error response code indicates that the
server can’t find the requested resource. Links which lead to a 404
page are often called broken or dead links, and can be subject to link
rot.

As you provide to clients some REST methods, you rely on the HTTP methods but you should not consider REST services as simple resources.
For clients, an error response in the REST method is often handled close to errors of other processings.

For example, to catch errors during REST invocations or somewhere else, clients could use catchError() of RxJS.

We could write a code (in TypeScript/Angular 2 for the sample code) in this way to delegate the error processing to a function :

return this.http
  .get<Foo>("/api/foos")
  .pipe(
      catchError(this.handleError)
  )
  .map(foo => {...})

The problem is that any HTTP error (5XX or 4XXX) will terminate in the catchError() callback.
It may really make the REST API responses misleading for clients.

If we do a parallel with programming language, we could consider 5XX/4XX as exception flow.
Generally, we don’t throw an exception only because a data is not found, we throw it as a data is not found and that that data would have been found.
For the REST API, we should follow the same logic.

If the entity may not be found, returning OK in the two cases is perfectly fine :

@GET
@Path("/{fooId}")
@Produces(MediaType.APPLICATION_XML)
public Response getFoo(@PathParam("fooId") final String fooId)
        throws IOException, ParseException {
    final Foo foo = fooService.getFoo(fooId);

    if (foo != null){
        return Response.status(Response.Status.OK).entity(foo).build();
    }

    return Response.status(Response.Status.OK).build();

}

The client could so handle the result according to the result is present or missing.
I don’t think that returning 204 brings any useful value.
The HTTP 204 documentation states that :

The client doesn’t need to go away from its current page.

But requesting a REST resource and more particularly by a GET method doesn’t mean that the client is about terminating a workflow (that makes more sense with POST/PUT methods).

The document adds also :

The common use case is to return 204 as a result of a PUT request,
updating a resource, without changing the current content of the page
displayed to the user.

We are really not in this case.

Some specific HTTP codes for classical browsing matche finely with return codes of REST API (201, 202, 401, and so for…) but this is not always the case.
So for these cases, rather than twisting original codes, I would favor to keep them simple by using more general codes : 200, 400.

A 4XX error code means error from the client side.
As you request a static resource as an image or a html page, returning a 404 response makes sense as :

The HTTP 404 Not Found client error response code indicates that the
server can’t find the requested resource. Links which lead to a 404
page are often called broken or dead links, and can be subject to link
rot.

As you provide to clients some REST methods, you rely on the HTTP methods but you should not consider REST services as simple resources.
For clients, an error response in the REST method is often handled close to errors of other processings.

For example, to catch errors during REST invocations or somewhere else, clients could use catchError() of RxJS.

We could write a code (in TypeScript/Angular 2 for the sample code) in this way to delegate the error processing to a function :

return this.http
  .get<Foo>("/api/foos")
  .pipe(
      catchError(this.handleError)
  )
  .map(foo => {...})

The problem is that any HTTP error (5XX or 4XXX) will terminate in the catchError() callback.
It may really make the REST API responses misleading for clients.

If we do a parallel with programming language, we could consider 5XX/4XX as exception flow.
Generally, we don’t throw an exception only because a data is not found, we throw it as a data is not found and that that data would have been found.
For the REST API, we should follow the same logic.

If the entity may not be found, returning OK in the two cases is perfectly fine :

@GET
@Path("/{fooId}")
@Produces(MediaType.APPLICATION_XML)
public Response getFoo(@PathParam("fooId") final String fooId)
        throws IOException, ParseException {
    final Foo foo = fooService.getFoo(fooId);

    if (foo != null){
        return Response.status(Response.Status.OK).entity(foo).build();
    }

    return Response.status(Response.Status.OK).build();

}

The client could so handle the result according to the result is present or missing.
I don’t think that returning 204 brings any useful value.
The HTTP 204 documentation states that :

The client doesn’t need to go away from its current page.

But requesting a REST resource and more particularly by a GET method doesn’t mean that the client is about terminating a workflow (that makes more sense with POST/PUT methods).

The document adds also :

The common use case is to return 204 as a result of a PUT request,
updating a resource, without changing the current content of the page
displayed to the user.

We are really not in this case.

Some specific HTTP codes for classical browsing matche finely with return codes of REST API (201, 202, 401, and so for…) but this is not always the case.
So for these cases, rather than twisting original codes, I would favor to keep them simple by using more general codes : 200, 400.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка клиента 401 при выполнении запроса к ресурсу
  • Ошибка ключевания счета получателя убрир