Dokumentacja dla programistów›Budowa aplikacji›Stronicowanie zdalnych opcji
Dokumentacja dla programistów

Stronicowanie zdalnych opcji

Budowa aplikacjiAplikacje monday.com
Aktualizacja 2025-10-23

Jeśli pole zwraca wiele zdalnych opcji, możesz użyć stronicowania, aby pobierać je w mniejszych partiach.

Informacje

Ładunek zawiera parametr pageRequestData, który wskazuje stronę używaną w żądaniu.

{
  recipeId: 30019598123,
  integrationId: 72966189123,
  automationId: 72966189123,
  pageRequestData: {},
  dependencyData: null
}

Aby użyć stronicowania, odpowiedź musi zawierać:

  • options jako tablicę par klucz-wartość. Każda opcja powinna zawierać title i value.
  • Parametr isPaginated (wartość logiczną).
  • nextPageRequestData z metadanymi kolejnej strony. Twoja aplikacja określa, w jaki sposób pobierać kolejne strony. Dzięki temu możesz wybrać, czy kolejną stronę pobierać na podstawie jej numeru, czy kursora.
  • Jeśli użytkownik poprosi o więcej opcji, wartość nextPageRequestData zostanie wysłana w następnym żądaniu jako pageRequestData.

Przykład

Poniżej znajdują się dwie implementacje pobierające listę użytkowników z zewnętrznego interfejsu API:

Generic
app.post("/fetchRemoteOptions", async function(req, res) {
  // de-structure request payload
  const pageLimit = 10;
  const { payload } = req.body;
  const { pageRequestData } = payload;
  const { page = 1 } = pageRequestData;

  // call external API
  const response = await fetch(`https://yourApi.com/users?page=${page}&limit=${pageLimit}`);
  const myUsers = await response.json();

  // generate array of options
  const options =  myUsers.map((user) => {
    const value = {
      title: user.name,
      value: user.id
    }
    return { value, title: user.name };
  });

  const nextPageRequestData = options.length === 0 ? null : { page: page + 1};

  // return HTTP response
  res.status(200).send({
    options,            
    isPaginated: true,
    nextPageRequestData
  });
})
Github
const getRepositories = async (token, payload) => {
  const octokit = new Octokit({ auth: token });
  const { pageRequestData } = payload;
  const { page = 1 } = pageRequestData;
  const reposResponse = await octokit.repos.list({per_page: YOUR_MAGIC_NUMBER, page });
  const repos = reposResponse ? reposResponse.data : [];
  const options = repos.map((repo) => {
    const value = {
      uniqueId: repo.id,
      owner: repo.owner.login,
      name: repo.name,
      full_name: repo.full_name,
      ownerType: repo.owner.type,
    };
    return { value, title: repo.name };
  });
  const nextPageRequestData = !repos.length ? null : { page: page + 1 };
  return { options, nextPageRequestData, isPaginated: true };
};

app.post("/fetchRemoteOptions", async function(req, res) {
  const { userId } = req.session;
  const { payload } = req.body;
  const token = await TokenService.getToken(userId);
  const response = await getRepositories(token, payload);
  res.status(200).send(response);
})

W przykładzie zaczynamy od strony 1 i pobieramy partie po 10 elementów. Żądania są wysyłane do momentu, aż nie będzie już więcej elementów do pobrania.

Nazwy użytkowników są widocznymi opcjami do wyboru. Początkowa wartość pageRequestData to 1. Przy każdym kolejnym żądaniu numer strony zwiększa się o jeden.

Gdy odpowiedź nie zawiera żadnych opcji, parametr nextPageRequestData przyjmuje wartość null i nie są wysyłane kolejne żądania.

Jeśli pobierasz opcje z zewnętrznego interfejsu API, może być konieczne użycie stronicowania za pomocą kursora. Ustaw zawartość nextPageRequestData zgodnie ze specyfikacją interfejsu API.