Μετάβαση στο περιεχόμενο
Πίσω στα Άρθρα

PrestaShop Webservice: filters, sorting και pagination χωρίς να κατεβάζεις όλο το catalogue

Efficient catalogue extraction & API integrations
HTTP
GET /api/products
?display=[id,reference,name]
&filter[active]=[1]
&sort=[id_DESC]
&limit=0,50

# next page
&limit=50,50
Webservices & API
Intermediate
PrestaHacks 2 min read

Το /api/products δουλεύει.

Το επόμενο λάθος είναι να ζητήσεις όλο το catalogue, με όλα τα fields, σε κάθε request.

Σε μικρό shop μπορεί να μη φανεί. Σε catalogue με χιλιάδες προϊόντα όμως, το σωστό filtering και pagination γίνεται μέρος του integration design.

1. Μην ξεκινάς με display=full

Για ένα synchronization ίσως χρειάζεσαι μόνο:

TEXT
id
reference
price
active
date_upd

Άρα:

API
/api/products?display=[id,reference,price,active,date_upd]

Το dataset γίνεται μικρότερο και πιο ξεκάθαρο.

2. Filter by reference

API
/api/products?filter[reference]=[ABC-001]

Useful flow:

API
EXTERNAL SKU
    ↓
filter[reference]
    ↓
PrestaShop Product ID

3. Sorting

Για deterministic exports:

API
/api/products?display=[id,reference,date_upd]&sort=[id_ASC]

ή:

TEXT
sort=[date_upd_DESC]

Tip

Stable sorting κάνει debugging και comparison μεταξύ exports πολύ ευκολότερο.

4. Limit

TEXT
limit=100

ή:

TEXT
limit=0,100

5. Pagination

Παράδειγμα:

TEXT
0,100
100,100
200,100
300,100

REQUEST 1 → rows 099
REQUEST 2 → rows 100199
REQUEST 3 → rows 200299

6. Batch processing

TEXT
FETCH
  ↓
VALIDATE
  ↓
TRANSFORM
  ↓
SAVE / SYNC
  ↓
NEXT OFFSET

Μην περιμένεις να ολοκληρωθεί όλο το catalogue πριν αποθηκεύσεις progress.

7. Incremental sync

Πιο χρήσιμο από συνεχές full export:

TEXT
LAST SUCCESSFUL SYNC
        ↓
date_upd
        ↓
ONLY CHANGED PRODUCTS
        ↓
UPDATE TARGET

8. Τι να καταγράφεις

TEXT
request URL
offset
limit
HTTP status
records returned
started_at
completed_at

9. Empty response δεν σημαίνει πάντα error

Μπορεί:

  • να τελείωσε το pagination,
  • να μην υπάρχουν matches,
  • να υπάρχει λάθος filter,
  • να βρίσκεσαι σε διαφορετικό shop context.

Production pattern

SQL
CONFIG
  ↓
FILTER
  ↓
SELECT FIELDS
  ↓
SORT
  ↓
PAGINATE
  ↓
TRANSFORM
  ↓
STORE
  ↓
VERIFY

[SCREENSHOT PLACEHOLDER 01]

Postman request με display, filter, sort και limit.

[SCREENSHOT PLACEHOLDER 02]

Δύο paginated responses με διαφορετικό offset.

Το API δεν είναι export button

Το σημαντικό δεν είναι απλώς να πάρεις data.

Είναι να ζητήσεις μόνο όσα χρειάζεσαι, deterministic και σε batches που μπορείς να ελέγξεις.

Επόμενο βήμα

Βάλε το paginated read σε ένα Google Sheets reporting workflow, κρατώντας offsets και sync metadata για κάθε batch. Αν το request δεν είναι ακόμη ξεκάθαρο, γύρισε στον οδηγό για το πρώτο Webservice request πριν το αυτοματοποιήσεις.

ΜΕΙΝΕ ΕΝΗΜΕΡΩΜΕΝΟΣ

Πρακτικά PrestaShop hacks κατευθείαν στο inbox σου.

ΑΝΕΝΕΡΓΟ