Search code examples
apirestpostmanbackendstrapi

Strapi filtering localization with images


I think problem may be in how I compose the request for API?

According to strapi documentation strapi docs there is possible to filter data by using following syntax. GET /api/:pluralApiId?filters[field][operator]=value example: Example request: Find users having 'John' as first name

So my goal is get images and text for specific localization for my collection AboutBox which contains 3 text fields and 1 media type. My request look like this: api/about-boxes?populate=*&?filters[locale][$eq]=en

What return request look like:

{
    "data": [
        {
            "id": 1,
            "attributes": {
                "title": "About us",
                "createdAt": "2023-02-08T07:47:38.543Z",
                "updatedAt": "2023-02-09T08:49:40.543Z",
                "publishedAt": "2023-02-08T07:48:48.681Z",
                "locale": "en",
                "text": "At CGI we provide a wide range of services and solutions that significantly help our clients grow financially and technologically. Our CGI CZ Space team focuses on the use of satellite data for remote scanning of the Earth tailored to all our customers across sectors. We deliver projects to the European Space Agency (ESA), participate in the development and support of the Galileo navigation system and more.",
                "buttonText": "Check it out",
                "logo": {
                    "data": {
                        "id": 3,
                        "attributes": {
                            "name": "cgi_logo.svg",
                            "alternativeText": "cgi_logo",
                            "caption": null,
                            "width": 59,
                            "height": 27,
                            "formats": null,
                            "hash": "cgi_logo_934146d58f",
                            "ext": ".svg",
                            "mime": "image/svg+xml",
                            "size": 0.98,
                            "url": "/uploads/cgi_logo_934146d58f.svg",
                            "previewUrl": null,
                            "provider": "local",
                            "provider_metadata": null,
                            "createdAt": "2023-02-08T07:46:17.180Z",
                            "updatedAt": "2023-02-08T07:48:31.102Z"
                        }
                    }
                },
                "localizations": {
                    "data": [
                        {
                            "id": 2,
                            "attributes": {
                                "title": "O nás",
                                "createdAt": "2023-02-08T07:47:50.849Z",
                                "updatedAt": "2023-02-10T14:04:21.010Z",
                                "publishedAt": "2023-02-10T14:04:20.963Z",
                                "locale": "cs",
                                "text": "Ve společnosti CGI poskytujeme širokou škálu služeb a řešení, která našim klientům významně pomáhají finančně a technologicky růst. Náš tým CGI CZ Space se zaměřuje na využití družicových dat pro dálkové snímkování Země na míru všem našim zákazníkům napříč odvětvími. Dodáváme projekty pro Evropskou kosmickou agenturu (ESA), podílíme se na vývoji a podpoře navigačního systému Galileo a dalších.",
                                "buttonText": "Podívejte se na to"
                            }
                        }
                    ]
                }
            }
        }
    ],
    "meta": {
        "pagination": {
            "page": 1,
            "pageSize": 25,
            "pageCount": 1,
            "total": 1
        }
    }
}

What I am expecting is get only data where is: "locale": "en", not the one where is "locale": "cs",

basically without this block

"localizations": {
                    "data": [
                        {
                            "id": 2,
                            "attributes": {
                                "title": "O nás",
                                "createdAt": "2023-02-08T07:47:50.849Z",
                                "updatedAt": "2023-02-10T14:04:21.010Z",
                                "publishedAt": "2023-02-10T14:04:20.963Z",
                                "locale": "cs",
                                "text": "Ve společnosti CGI poskytujeme širokou škálu služeb a řešení, která našim klientům významně pomáhají finančně a technologicky růst. Náš tým CGI CZ Space se zaměřuje na využití družicových dat pro dálkové snímkování Země na míru všem našim zákazníkům napříč odvětvími. Dodáváme projekty pro Evropskou kosmickou agenturu (ESA), podílíme se na vývoji a podpoře navigačního systému Galileo a dalších.",
                                "buttonText": "Podívejte se na to"
                            }
                        }
                    ]
                }

Also for unknow reason when I get request for czech localization I did not get data in return: czech request return

Any help would be appreciated


Solution

  • I found the solution problem was in request type added question mark after &. original wrong request:

    api/about-boxes?populate=*&?filters[locale][$eq]=en
    

    So the request should look like this:

    api/about-boxes?populate=logo&filters[locale][$eq]=en
    

    Or second variant:

    api/about-boxes?locale=en&populate=logo
    

    both give same result