Ошибка 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
дает ожидаемые (правильные) результаты.
Я думаю, что это ошибка, потому что:
- Такое поведение не задокументировано (какие символы разрешены?).
- URL без доменного имени работает без нареканий даже без кодировки
.
В том числе API для добавления новых доменов (который также принимает домен в качестве параметра формы, а не в URL).
TL; DR
С помощью:
pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio
вместо
pallavagarwal07%2Fpallavagarwal07.gitlab.io
в URL заставляет это работать.