Ошибка API 404 страниц GitLab для определенных проектов

Я писал сценарии автоматизации для создания и обновления SSL-сертификатов с использованием API-интерфейсов Namesilo, Letsencrypt и Gitlab. Я почти дошел до конца, но получаю ошибку 404 при попытке обновить SSL-сертификат на Gitlab.

Странная часть заключается в том, что ошибка происходит только в одном из двух моих проектов. В частности, работает:

curl --header "Private-Token: XXXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fshort-links/pages/domains/pallav.xyz"

работает нормально и получает информацию о домене pallav.xyz в проекте short-links,

Но, работает:

curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains/varstack.com"

возвращает ошибку 404 Однако, что делает его более странным, так это то, что если я удалю имя домена varstack.com из URL, это дает мне список доменов, как и ожидалось:

curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains"

возвращает:

[{"domain":"varstack.com","url":"https://varstack.com","certificate":....]

1 ответ

Решение

Я наконец понял это (хотя я все еще классифицировал бы это как ошибку со стороны GitLab).

Идентификатор должен быть в кодировке URL, поэтому я заменил / в имени хранилища %2F, Однако характер . не должно было быть проблемой (- в бывшем URL проблем не возникло). Тем не менее, замена . от %2E дает ожидаемые (правильные) результаты.

Я думаю, что это ошибка, потому что:

  1. Такое поведение не задокументировано (какие символы разрешены?).
  2. URL без доменного имени работает без нареканий даже без кодировки .В том числе API для добавления новых доменов (который также принимает домен в качестве параметра формы, а не в URL).

TL; DR

С помощью:

pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio

вместо

pallavagarwal07%2Fpallavagarwal07.gitlab.io

в URL заставляет это работать.

Другие вопросы по тегам