#rest #post #lotus-domino
#rest #Публикация #lotus-domino
Вопрос:
я пытаюсь использовать REST-API моего сервера domino lotus notes (9.0.1FP8)
Это работает для простых текстовых полей, но если я попытаюсь добавить элемент rich text в формате json, сервер domino получит только текстовые поля, а поле richt-text будет пустым.
Я пробую это с помощью Postman и Postrequest к http://localhost/Test/JSON_Vie …s / name /List?form= Основная форма, куда я отправляю json
{
"title":"test rich text",
"artist":"rich texter",
"ntracks":1,
"attachments": {
"type": "multipart",
"content": [
{
"contentType": "multipart/alternative; Boundary="0__=4EBB0925DFBB40F18f9e8a93df938690918c4EBB0925DFBB40F1"",
"contentDisposition": "inline"
},
{
"contentType": "text/plain; charset=US-ASCII",
"data": "test rich text",
"boundary": "--0__=4EBB0925DFBB40F18f9e8a93df938690918c4EBB0925DFBB40F1"
},
{
"contentType": "text/html; charset=US-ASCII",
"contentDisposition": "inline",
"data": "<html><body><font size="2" face="sans-serif"><b>test rich text</b></font></body></html>",
"boundary": "--0__=4EBB0925DFBB40F18f9e8a93df938690918c4EBB0925DFBB40F1"
}
]
}
}
Основная форма маски содержит текстовые поля «заголовок», «исполнитель», «ntracks» и форматированное текстовое поле «вложения».
Как я могу отправить изображение в формате json и что такое «граница»?
Есть ли у вас какие-либо идеи, что происходит не так?
Комментарии:
1. Вы используете DAS или ExtLib?
2. Вы пробовали что-нибудь простое вроде этого? «вложения»:{«ContentType»: «текст / html», «данные»: «<b> протестировать форматированный текст</b>», «тип»: «richtext»}
3. @ThomasAdrian: Я просто хочу сначала протестировать его для простого HTML-кода. Но на самом деле я хочу отправить изображение в формате json, и я не понимаю, как это сделать. Я использую DAS.
4. @PerHenrikLausten Я попробовал ваш простой json для вложений, но поле по-прежнему пустое.
5. @PerHenrikLausten: это действительно интересно. Если я использую put для существующего документа и добавляю свое поле вложения в json, это работает! Возможно ли это каким-либо образом в POST?
Ответ №1:
Согласно документации от IBM, вам нужно использовать PUT (вместо POST), чтобы обновить поля.
Комментарии:
1. И снова здесь: www-10. lotus.com/ldd/ddwiki.nsf / … вот пример добавления вложения к POST-запросу. Итак, почему это работает только для существующих документов в PUT?
2. Я думаю, документация могла бы быть более понятной, но она работает так, как задумано. Чтобы создать новый документ, вы ОТПРАВЛЯЕТЕ его на ресурс коллекции документов (в URL-адресе нет идентификатора UNID). Чтобы обновить существующий документ, вы ОТПРАВЛЯЕТЕ его на ресурс document (с идентификатором UNID в URL). Это различие между PUT и POST согласуется с лучшими практиками REST.
3. Да, @Dave Delay Я понимаю разницу между POST и PUT. Но я не понимаю, почему я не могу создать (опубликовать) отдельный документ с вложением. Итак, я должен сначала сделать запрос POST для текстовых полей, а затем я должен сделать PUT только для добавления вложения?
4. Я не вижу вложения в вашем исходном сообщении. Есть только три части (составная / альтернативная, текстовая / обычная и текстовая / html). При правильном вводе вы определенно можете создать вложение в запросе POST. Поскольку вы уже приняли этот ответ, возможно, вам следует создать другой вопрос о вложении.
5. @DaveDelay : все правильно, сначала я пытаюсь опубликовать простой HTML-код для форматированного текстового поля «вложения», чтобы убедиться, что это работает! Но это не так. Мой POST-запрос изображения в качестве вложения выглядит следующим образом <code>{ «title»: «bild», «artist»: «bild», «attachments»:{ «type»: «multipart», «content»:[ { «ContentType»: «image / png», «data»: «IVBORW0KGGOAAAANSUHEUGAAARWAAADJCAIAAB EhqfAAAAAXNSR …», » contentTransferEncoding»: «base64» } ] } } </код>
Ответ №2:
Немного поэкспериментировав, я теперь знаю, в чем была ошибка. Если я делаю публикацию по адресу http://localhost/Test/JSON_Views.nsf/api/data/documents?form=mainForm
, она работает с вложением. Если я использую http://localhost/Test/JSON_Views.nsf/api/data/collections/name/List?form=mainFormamp;computewithform=true
, поле вложения игнорируется. Но, может быть, вы можете объяснить мне, что такое дополнительная граница поля и могу ли я установить contentLocation по имени моего вложения?
Комментарии:
1. Судя по вашим комментариям, похоже, вам удалось опубликовать документ с вложением. Это хорошо. Если у вас есть дополнительный вопрос, я рекомендую начать новую тему. StackOverflow работает лучше всего, когда вопрос максимально узкий и на каждый вопрос есть четкий ответ. Использование ответов для задания последующих вопросов сбивает с толку.