#spring #spring-cloud #configserver
#spring #spring-cloud #configserver
Вопрос:
У меня запущен и запущен сервер конфигурации с соответствующим приложением.настройка yml
spring:
application:
name: config
...
searchPaths:
- '{application}'
- '{application}/{profile}'
Я хотел бы получить доступ к файлу , которого нет application.properties
, что — то вроде myfile.txt
. Если у меня есть макет git
/myapp/nested/folder/myfile.txt
Я хочу иметь доступ к этому файлу. Согласно документам Spring Config Server, я должен иметь возможность сделать это с помощью /{name}/{profile}/{label}/{path}
, но я не могу заставить какие-либо пути работать.
TL; DR: Как мне получить вложенные файлы конфигурации из репозитория git через Config Server?
Комментарии:
1. Попробуйте использовать косые черты, а не
(_)
?2. В документах специально вызывается использование
(_)
вместо/
, чтобы можно было анализировать разграничения между{label}
и{application}
и т. Д. Я все равно добавлю эти попытки, чтобы показать, что они не работают.3. Они предназначены только для заполнителей в конфигурации, а не для пути к файловому api.
Ответ №1:
TL; DR: Документация неверна. Конечная /{name}/{profile}/{label}/{path}
точка должна быть записана как /{application}/{profile}/{label}/{path}
. Вам просто нужно убедиться, что один из ваших searchPaths/{path}
файлов может разрешить ваш файл.
Во-первых, {label}
это, как всегда, имя ветки git (вероятно, «master»).
Во-вторых, {path}
can может быть абсолютным путем к файлу. Он использует /
, myapp/nested/folder/myfile.txt
т.Е. , Не (_)
так, как требуется в {application}
или {label}
.
В-третьих, пути поиска в вопросе заданы на '{application}'
и '{application}/{profile}'
, наряду с путем поиска по умолчанию /
, корневой каталог репозитория git. Они определяют места, в которых сервер конфигурации будет искать обычный текстовый файл, как:
/{expanded application}/{path}
/{expanded application}/{profile}/{path}
/{path}
Обратите внимание, что {application}
он может быть расширен только на несколько папок с (_)
помощью и {path}
может включать только несколько папок с /
помощью . Например, для этих searchPaths
файлов и файла, расположенного по адресу /myapp/nested/folder/myfile.txt
, допустимы следующие запросы:
/asdf/asdf/master/myapp/nested/folder/myfile.txt
/myapp/asdf/master/nested/folder/myfile.txt
/myapp/nested/master/folder/myfile.txt
/myapp(_)nested(_)folder/asdf/master/myfile.txt
/myapp(_)nested/folder/master/myfile.txt
где asdf
может быть любая произвольная строка.
Комментарии:
1. Я, конечно, могу создать сервер конфигурации и указать такой путь
http://localhost:8888/foo/default/master/nested/hello.txt
, который правильно получает файлы в каталоге.2. Похоже, вы правы. Возможно указать полный путь с помощью
/
. Я бы хотел, чтобы это было задокументировано где-нибудь на странице «обслуживание текстовых файлов», а не только файлов верхнего уровня.3. Отредактировал мой ответ, спасибо за помощь. Я бы хотел это сделать! надеюсь, я доберусь до этого где-нибудь на этой неделе.
4. Я думаю
{name}
, что поле неверно, поскольку оно отображается{application}
вsearchPaths
наборе I и вызывается{application}
везде в документации. Другие части были просто неясны, поскольку не было примера с вложенным путем к файлу.