Я загружаю информацию из ресурса AZURE (всего около 3700 записей с 10 атрибутами).Ответ содержит заголовок (x-ms-продолжение: {"token": "- RID: R-UdANZutGzxAwAAAAAAAA == # RT: 1 # TRC: 1000", "range": {"min": "", "max":" FF "}}) указывает на то, что должно быть загружено больше элементов + заголовок должен быть добавлен к следующему запросу, чтобы получить следующие 1000 записей.Данные должны храниться в переменной (account), поэтому данные загружаются только один раз при загрузке приложения.
При инициализации страницы функция: public getAccounts () запускает функцию load (), которая возвращает первые 1000 записей.и сохраняет их на счетах.В закомментированном разделе есть fetchAccounts, где я пытался заставить это работать.
export class AccountsService {
private accounts: AccountModel = null;
constructor(private http: HttpClient) { }
/* public getAccounts2() {
console.log(this.accounts);
return this.accounts;
}
loadAccounts() {
this.fetchAccounts().subscribe(accounts => this.accounts.next(accounts));
}
public fetchAccounts(): Observable<AccountModel[]> {
return this.http.get<AccountModel>(AZURE_URL + 'zuora/read', { headers })
.pipe(
expand(accounts => {
if (!accounts) {
console.log(accounts.headers.get('x-ms-continuation'));
return EMPTY;
}
return this.http.get<AccountModel>(AZURE_URL + 'zuora/read', { headers });
}),
map(accounts => accounts.Documents),
reduce((accData, data) => accData.concat(data), []),
);
} */
public getAccounts(): AccountModel {
return this.accounts;
}
load() {
console.log('loading account data');
return new Promise((resolve, reject) => {
this.http
.post<any>(AZURE_URL + 'zuora/read', {
'query': 'SELECT * FROM products'
}
, { headers })
.pipe(map(data => data))
.subscribe(data => {
this.accounts = data;
console.log('data loading complete');
resolve(true);
});
});
}
}
Это ссылка на Curl из документации API AZURE @ECHO OFF
curl -v -X POST "https://jangoepelapitest.azure-api.net/zuora/read"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "{body}"
Это APIОпределение:
{
"openapi": "3.0.1",
"info": {
"title": "cosmos zuora",
"description": "",
"version": "1.0"
},
"servers": [
{
"url": "https://xxxxxxx.azure-api.net/zuora"
}
],
"paths": {
"/read": {
"post": {
"summary": "Read",
"description": "query accounts",
"operationId": "5c1a4f71153ff8904fd4106a",
"requestBody": {
"content": { }
},
"responses": { }
}
},
"/write": {
"post": {
"summary": "write",
"description": "query accounts",
"operationId": "5c1b45759ba2ebb7bba2c13d",
"requestBody": {
"content": { }
},
"responses": { }
}
},
"/copy-5c1b6-of-/read": {
"post": {
"summary": "Read (clone)",
"description": "query accounts",
"operationId": "5c1b6b9feea787d74728b102",
"requestBody": {
"content": { }
},
"responses": { }
}
}
},
"components": {
"securitySchemes": {
"apiKeyHeader": {
"type": "apiKey",
"name": "Ocp-Apim-Subscription-Key",
"in": "header"
},
"apiKeyQuery": {
"type": "apiKey",
"name": "subscription-key",
"in": "query"
}
}
},
"security": [
{
"apiKeyHeader": [ ]
},
{
"apiKeyQuery": [ ]
}
]
}
Все записи должны быть загружены из ресурса Azure и сохранены в учетных записях.