Загрузка разнесенных тегов через XWiki-API
Я использую ruby и typhoeus-gem для загрузки контента на страницы XWiki через его RESTful API. Это работает отлично. Но когда дело доходит до загрузки тегов, я борюсь с пробелами. Добавление разделенных запятыми тегов через GUI, таких как "наличие пробелов, другой тег", приведет к двум тегам: "наличие пробелов" и "другой тег". Это то, что я хочу, но это не работает с API. Приведенные выше примеры приведут к пяти тегам, разделенным пробелами.
- имеющий
- пространство
- персонажи
- другой
- тег
Документация API описывает, как добавить вкладку на страницу. Это говорит о том, что в случае "application/x-www-form-urlencoded" используется имя поля "tag". Если я использую этот тип поля, можно загрузить только один тег. Повторение этого перезапишет предыдущий тег (ы). Поэтому я попробовал "теги" в качестве типа поля, и он работает для загрузки нескольких тегов. Но все равно проблема с расстоянием выглядит так, как описано выше.
Вот код рубина, который я использую:
url = mainpage_url + "/tags"
tags = "having space characters, another tag"
# HTTP PUT request
request = Typhoeus::Request.new(
url,
ssl_verifypeer: false,
method: :put,
userpwd: "#{username}:#{password}",
headers: {'Content-Type'=> "application/x-www-form-urlencoded;charset=UTF-8"},
body: {tags: tags}
)
# Handling HTTP errors
request.on_complete do |response|
if response.success?
#$log.info("Tags uploaded.")
elsif response.timed_out?
$log.error("Time out: Tags not uploaded.")
elsif response.code == 0
$log.fatal("Could not get http response while uploading Tags. #{response.return_message}")
else
$log.fatal("HTTP request failed while uploading Tags. #{response.code.to_s}")
end
end
request.run
response = request.response
puts response.body
Я уже попробовал:
- Замените пространства тегов на "+", "%20" и "\s".
- Используйте text/plain и application/xml в качестве типа носителя
Я думаю, что application/xml может быть решением. Я пробовал разные xml-строки без успеха. Может быть, у вас есть подсказка для меня.
1 ответ
Когда я писал свой вопрос, я обнаружил, что замена пробелов символом новой строки (\n) не даст XWiki разделять теги по их пробелам. Итак, строка должна выглядеть так:
tags = "having\nspace\ncharacters,another\ntag"
Это приведет к тому, как задумано в:
- с пробелами
- другой тег
Поправьте меня, но я не думаю, что это лучшая практика. Добро пожаловать, если у вас есть другое решение.