Документум Rest API
Введение:
В настоящее время существует очень обычная тенденция использовать restful API для разработки программных продуктов из-за его гибкости взаимодействия. Поэтому очень часто для сервера Documentum используются остальные API. В этом блоге я объясню, как мы можем работать с Documentum Rest API.
Форматы результатов:
Для Documentum API доступно два формата результатов, например. JSON, XML. Большинство приложений использовали JSON в качестве формата по умолчанию. Мы можем получить ответ в определенном формате, добавив «тип контента» в запрос API.
Вызовы API:
Как вы знаете, существуют следующие типы HTTP-запросов для restful API.
- ПОЛУЧИТЬ (получить данные)
- POST (Создание данных)
- PUT (обновить данные)
- УДАЛИТЬ (удалить данные)
GET (получение данных)
Генерируя запрос GET для API, мы можем получить список репозиториев Documentum, список папок или список документов в папке.
- URL для получения списка репозиториев.
[GET] http://HOSTNAME:PORT/dctm-rest/repositories
- URL для получения списка папок
[GET] http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/folders/1211s5488d5e/folders
- URL для получения списка документов в папке
[GET] http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/folders/1211s5488d5e/documents
Пример запроса GET:
request({ method: 'GET', uri: 'http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/folders/1211s5488d5e/documents', auth: { 'user': 'username', 'pass': 'password', 'sendImmediately': false }, headers: { "content-type": "application/vnd.emc.documentum+json" }, function (error, response, body) { if (error) { return console.error('upload failed:', error); } console.log('Response Body:', body); })
Вышеприведенный запрос будет иметь ответ в формате JSON, так как мы добавили тип контента.
POST (Создание данных)
Генерируя запрос POST, мы можем создать метаданные документа и загрузить файл по идентификатору объекта документа.
Мы создаем метаданные и загружаем документ в папку.
- URL для создания метаданных в папке.
[POST] http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/folders/525d542w971e/documents
- URL для загрузки содержимого документа
[POST] http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/objects/1452s87d45de2(document object id)/contents
Примеры POST-запросов.
Прежде всего нам нужно создать метаданные документа и в ответ мы получим r_object_id, который является уникальным идентификатором документа. Этот r_object_id будет использоваться для загрузки содержимого документа.
request({ method: 'POST', uri: 'http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/folders/0c01322b80004318/documents', auth: { 'user': 'username', 'pass': 'password', 'sendImmediately': false }, headers: { "content-type": "application/vnd.emc.documentum+json" }, body: JSON.stringify( {"properties": {"object_name":"Test Doc.pdf", "r_object_type":"leasing_document", "a_content_type":"pdf", }}) }, function (error, response, body) { if (error) { return console.error('upload failed:', error); } console.log('Response Body:', body); })
В ответ допустим мы получили "r_object_id":"14s25d4845s77"
Теперь мы можем сгенерировать запрос POST для загрузки содержимого документа.
var stream; stream = fs.createReadStream("D:/Test Doc.pdf"); let formData = { toUpload: { value:stream, options: { filename: 'Test Doc', contentType: 'pdf' } } }; let options = { url: "http://HOSTNAME:PORT/dctm- rest/repositories/user_repo/objects/14s25d4845s77/contents", method: 'POST', formData: formData, auth: { 'user': 'username', 'pass': 'password', 'sendImmediately': false } } request(options, function (err, resp, body) { if (err) console.log(err); else{ console.log("File Uploaded"+ body); } });
PUT (обновить данные)
Мы можем сгенерировать запрос PUT для проверки документа. После извлечения документа он будет заблокирован, и мы сможем загрузить новую версию этого документа.
- URL-адрес оформления заказа
[PUT] http://HOSTNAME:PORT/dctm-rest/repositories/user_repo/objects/1452s87d45de23/lock
- Ответ на заказ
{ "rel": "http://identifiers.emc.com/linkrel/checkin-next-major", "href": "http://HOSTNAME:PORT/dctm-rest/repositories/user_repo
/objects/0901322b800ba16f/versions?object-id=0901322b800ba16f&version-policy=next-major" }, { "rel": "http://identifiers.emc.com/linkrel/checkin-next-minor", "href": "http://HOSTNAME:PORT/dctm-rest/repositories/user_repo
/objects/0901322b800ba16f/versions?object-id=0901322b800ba16f&version-policy=next-minor" }, { "rel": "http://identifiers.emc.com/linkrel/cancel-checkout", "href": "http://HOSTNAME:PORT/dctm-rest/repositories/user_repo
/objects/0901322b800ba16f/lock" },
- Отменить-Оформить заказ
Мы можем разблокировать проверенный документ, сгенерировав запрос DELETE на указанный выше URL-адрес отмены проверки.
УДАЛИТЬ (удалить данные)
Чтобы удалить документ и метаданные, мы можем сгенерировать запрос DELETE для следующего URL-адреса.
- Пример запроса
request({
method: 'DELETE',
uri: 'http://HOSTNAME:PORT/dctm-rest/repositories/user_repo
/objects/0901322b800025fe',
auth: {
'user': 'username',
'pass': 'password',
'sendImmediately': false
},
},
function (error, response, body) {
if (error) {
return console.error('Delete failed:', error);
}else{
console.log('Response Body:', body);
}
})