frontend/pages/api/mapbox/autofill/retrieve.ts (view raw)
1import type {NextApiRequest, NextApiResponse} from 'next';
2import {
3 AddressAutofillCore,
4 AddressAutofillFeatureSuggestion,
5} from '@mapbox/search-js-core';
6
7const {MAPBOX_TOKEN} = process.env;
8
9export default async function handler(
10 req: NextApiRequest,
11 res: NextApiResponse<{features: Array<AddressAutofillFeatureSuggestion>}>
12) {
13 const {locale, sessionToken} = req.query;
14 const suggestion = JSON.parse(req.body);
15
16 if (Array.isArray(locale) || Array.isArray(sessionToken)) {
17 res.status(422);
18 return;
19 }
20
21 const autofill = new AddressAutofillCore({
22 accessToken: MAPBOX_TOKEN || '',
23 language: locale,
24 });
25
26 await autofill.suggest(suggestion.original_search_text, {sessionToken});
27 const {features} = await autofill.retrieve(suggestion, {sessionToken});
28 if (features.length === 0) {
29 res.status(404);
30 return;
31 }
32
33 res.send({features});
34 return;
35}