У меня есть url /{database}/api/data/collections/name/{name}
.Lotus Notes Xpages, Как получить «Content-Range» в документе api
Как это получить? {name}
с getResponseHeader("Content-Range")
?
У меня есть url /{database}/api/data/collections/name/{name}
.Lotus Notes Xpages, Как получить «Content-Range» в документе api
Как это получить? {name}
с getResponseHeader("Content-Range")
?
SSJS
Вы можете получить все поля заголовка ответа с методом HttpURLConnection в getHeaderFields()
.
Выберите нужное поле заголовка get('Content-Range')
.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:
var url = new java.net.URL(
"http://yourServer/yourDatabase.nsf/api/data/collections/name/All");
var conn:java.net.HttpURLConnection = url.openConnection();
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() == "200") {
try {
return conn.getHeaderFields().get('Content-Range');
} catch(e) {
return 'Error reading header field "Content-Range"';
}
} else {
return 'Error ' + conn.getResponseCode() + " " + conn.getResponseMessage();
}
}]]></xp:this.value>
</xp:text>
</xp:view>
Этот пример XPage оказывает как результат, например, items 0-9/35
и указывает, что ответ содержит записи с 0 по 9 из 35 записей.
Если вы хотите, чтобы получить общее количество записей только затем измените строку
return conn.getHeaderFields().get('Content-Range');
в
var range = conn.getHeaderFields().get('Content-Range').get(0);
var total = range.substr(range.indexOf('/') + 1);
return total;
это сделает только тот же URL 35
.
CSJS метод
Используйте XMLHttpRequest в getResponseHeader()
на стороне клиента:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
var range = xhr.getResponseHeader("Content-Range");
var total = range.substr(range.indexOf('/') + 1);
return total
Спасибо вам большое –
, он работает в сервере js. но я хочу получить в js клиента. ~ он работает, когда я использую: var xhr = new XMLHttpRequest(); xhr.open ('GET', url, false); xhr.send (null); var contentRanger = xhr.getResponseHeader («Content-Range»). ToLowerCase(); contentRanger = contentRanger.replace ('items', ''); contentRanger = contentRanger.split ('/'); var total = contentRanger [1]; return total –
Я создал версию JavaScript на стороне сервера (SSJS), как вы сказали в своем комментарии «Я использую SSJS ...». Итак, теперь у нас есть обе версии: SSJS в моем ответе и CSJS в вашем комментарии. –
Вы хотите, чтобы получить * число * всех записей? Используете ли вы LotusScript, Java или SSJS, вызывающие URL-адрес службы доступа к Domino? –
Да, я хочу получить количество всех записей. Я использую SSJS, вызывающий Domino Access Services URL –