NueForm

Pagination

Page-based pagination का उपयोग करके NueForm API list endpoints को paginate करना सीखें, जिसमें query parameters, response metadata, और iteration उदाहरण शामिल हैं।

सभी NueForm API endpoints जो resources की lists लौटाते हैं, page-based pagination सपोर्ट करते हैं। यह गाइड query parameters, response format, और सभी results को iterate करने के patterns को कवर करती है।

Query Parameters

दो query parameters के साथ pagination को नियंत्रित करें:

ParameterTypeDefaultविवरण
pageinteger1प्राप्त करने के लिए page number (1-indexed)।
per_pageinteger20प्रति page items की संख्या। न्यूनतम: 1, अधिकतम: 100

यदि per_page 100 से अधिक है, तो API इसे स्वचालित रूप से 100 पर cap करता है। 1 से कम values 1 पर default होती हैं।

Request उदाहरण

GET/api/v1/forms?page=2&per_page=25
curl
curl -X GET "https://app.nueform.com/api/v1/forms?page=2&per_page=25" \
  -H "Authorization: Bearer nf_your_api_key_here"

Response Format

Paginated responses में data array के साथ एक meta object शामिल होता है:

json
{
  "data": [
    {
      "id": "clx1abc2d3e4f5g6h7i8j9k0",
      "title": "Customer Feedback",
      "status": "published",
      "created_at": "2026-01-15T09:30:00.000Z"
    },
    {
      "id": "clx2def3g4h5i6j7k8l9m0n1",
      "title": "Employee Survey",
      "status": "draft",
      "created_at": "2026-01-20T14:00:00.000Z"
    }
  ],
  "meta": {
    "page": 2,
    "per_page": 25,
    "total": 73,
    "total_pages": 3
  }
}

Meta Fields

FieldTypeविवरण
pageintegerवर्तमान page number।
per_pageintegerप्रति page items की संख्या (जैसा लागू किया गया)।
totalintegerसभी pages में कुल items की संख्या।
total_pagesintegerकुल pages की संख्या (ceil(total / per_page) से गणना)।

सभी Pages को Iterate करना

जब आपको किसी list endpoint से प्रत्येक item प्राप्त करना हो, तो page total_pages से अधिक होने तक pages को iterate करें।

JavaScript

javascript
async function fetchAllForms() {
  const allForms = [];
  let page = 1;
  let totalPages = 1;

  do {
    const response = await fetch(
      `https://app.nueform.com/api/v1/forms?page=${page}&per_page=100`,
      {
        headers: {
          "Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
        },
      }
    );

    const { data, meta } = await response.json();
    allForms.push(...data);
    totalPages = meta.total_pages;
    page++;
  } while (page <= totalPages);

  console.log(`Fetched ${allForms.length} forms in total.`);
  return allForms;
}

Python

python
import os
import requests

API_KEY = os.environ["NUEFORM_API_KEY"]
BASE_URL = "https://app.nueform.com/api/v1"

def fetch_all_forms():
    all_forms = []
    page = 1
    total_pages = 1

    while page <= total_pages:
        response = requests.get(
            f"{BASE_URL}/forms",
            headers={"Authorization": f"Bearer {API_KEY}"},
            params={"page": page, "per_page": 100},
        )
        body = response.json()
        all_forms.extend(body["data"])
        total_pages = body["meta"]["total_pages"]
        page += 1

    print(f"Fetched {len(all_forms)} forms in total.")
    return all_forms

Async Generator (JavaScript)

बड़े datasets के लिए, सब कुछ memory में load करने के बजाय items आते ही प्रोसेस करने के लिए async generator का उपयोग करें:

javascript
async function* paginatedForms(perPage = 100) {
  let page = 1;
  let totalPages = 1;

  do {
    const response = await fetch(
      `https://app.nueform.com/api/v1/forms?page=${page}&per_page=${perPage}`,
      {
        headers: {
          "Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
        },
      }
    );

    const { data, meta } = await response.json();
    totalPages = meta.total_pages;

    for (const form of data) {
      yield form;
    }

    page++;
  } while (page <= totalPages);
}

// उपयोग
for await (const form of paginatedForms()) {
  console.log(`Processing: ${form.title}`);
}

Edge Cases

खाली Results

यदि कोई भी item query से match नहीं करता, तो API total: 0 के साथ एक खाली data array लौटाता है:

json
{
  "data": [],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 0,
    "total_pages": 0
  }
}

Total से अधिक Page

total_pages से अधिक page number request करने पर एक खाली data array लौटता है। meta values अभी भी समग्र collection को दर्शाती हैं:

json
{
  "data": [],
  "meta": {
    "page": 10,
    "per_page": 20,
    "total": 73,
    "total_pages": 4
  }
}

अमान्य Parameters

अमान्य pagination parameters को gracefully handle किया जाता है:

Inputव्यवहार
page=0 या page=-11 पर default
page=abc1 पर default
per_page=0 या per_page=-51 पर default
per_page=500100 पर cap
per_page=abc20 पर default

सर्वोत्तम प्रथाएं

Bulk retrieval के लिए अधिकतम per_page का उपयोग करें

सभी resources fetch करते समय, API calls की संख्या कम करने के लिए per_page=100 सेट करें। प्रत्येक call आपकी rate limit के विरुद्ध गिनी जाती है।

Iterate करने से पहले total_pages जांचें

कब रुकना है यह निर्धारित करने के लिए हमेशा meta object से total_pages पढ़ें। अनिश्चित काल तक iterate न करें या fixed number of pages assume न करें।

बड़े datasets के लिए requests के बीच delay जोड़ें

यदि आप कई pages fetch कर रहे हैं, तो rate limits से बचने के लिए requests के बीच एक छोटा delay जोड़ें:

javascript
// Page requests के बीच 200ms delay जोड़ें
await new Promise((resolve) => setTimeout(resolve, 200));

उचित होने पर total को cache करें

यदि आपको केवल कुल गिनती चाहिए (जैसे, "47 forms" प्रदर्शित करने के लिए), तो data transfer कम करने के लिए per_page=1 request करें और meta.total पढ़ें:

curl
curl -X GET "https://app.nueform.com/api/v1/forms?per_page=1" \
  -H "Authorization: Bearer nf_your_api_key_here"

Pagination results प्रत्येक request के समय data की स्थिति को दर्शाते हैं। यदि page requests के बीच items बनाए या हटाए जाते हैं, तो आपको duplicates दिख सकते हैं या items छूट सकते हैं। Consistent snapshots के लिए, सभी pages जल्दी fetch करें या रियल-टाइम अपडेट के लिए webhooks का उपयोग करें।

अंतिम अपडेट: 6 अप्रैल 2026