Spring Cloud Config Server, обслуживающий вложенные текстовые файлы

У меня запущен и работает сервер конфигурации с соответствующей настройкой application.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}, но я не могу заставить работать какие-либо пути.

Вкратце: как получить вложенные файлы конфигурации из репозитория git через сервер конфигурации?

Попробуйте использовать косую черту, а не (_)?

spencergibb 10.04.2019 01:31
документы специально вызывает использование (_) вместо /, чтобы разграничение между {label} и {application} и т. д. можно было разобрать. Я все равно добавлю эти попытки, чтобы показать, что они не работают.
jeremysprofile 10.04.2019 02:02

Они предназначены только для заполнителей в конфигурации, а не для пути к файлу API.

spencergibb 10.04.2019 20:21
0
3
1 809
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TL;DR: документация неверна. Конечная точка /{name}/{profile}/{label}/{path} должна быть записана как /{application}/{profile}/{label}/{path}. Вам просто нужно убедиться, что один из ваших searchPaths/{path} может разрешить ваш файл.


Во-первых, {label} — это, как всегда, имя ветки git (вероятно, «мастер»).

Во-вторых, {path} может быть абсолютным путем к файлу. Он использует /, то есть myapp/nested/folder/myfile.txt, а не (_), как требуется в {application} или {label}.

В-третьих, пути поиска в вопросе установлены как '{application}' и '{application}/{profile}', а также путь поиска по умолчанию /, корневой каталог репозитория git. Они определяют места, где Config Server будет искать обычный текстовый файл:

/{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 может быть любой произвольной строкой.

Я, конечно, могу создать сервер конфигурации и указать такой путь http://localhost:8888/foo/default/master/nested/hello.txt, который правильно получает файлы в каталоге.

spencergibb 10.04.2019 20:22

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

jeremysprofile 10.04.2019 20:32

Отредактировал мой ответ, спасибо за помощь. Я хотел бы сделать это! надеюсь, я доберусь до него где-нибудь на этой неделе.

jeremysprofile 10.04.2019 20:53

Я думаю, что поле {name} неверно, так как оно сопоставляется с {application} в searchPaths, которое я установил, и называется {application} везде в документации. Другие части были просто неясны, так как не было примера с вложенным путем к файлу.

jeremysprofile 11.04.2019 00:54

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