REST API, ОТПРАВКА элемента форматированного текста на сервер Domino

#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 работает лучше всего, когда вопрос максимально узкий и на каждый вопрос есть четкий ответ. Использование ответов для задания последующих вопросов сбивает с толку.