Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
Next.js: el filtro en la URL de API de descanso no funciona cuando la ruta es una ruta de API dinámica

Estoy tratando de implementar un filtro en la API antes de buscar.
Tengo una ruta API dinámica ([productType]), que funciona bien. Pero cuando trato de filtrar la API, no funciona. Entonces, la sintaxis para filtrar la API se ve así ?$filter=name eq 'Milk' y agregar esto a la url no funciona.
Como dice en los documentos, he intentado cambiar el nombre del archivo de esta manera [... productType] o [[... productType]] pero ninguno de ellos ayuda.
Devuelve los datos de la API sin filtrar. Aquí está mi código en la ruta dinámica API [tipo de producto]. páginas/api/[tipo de producto]

 import axios, { AxiosRequestConfig, Method } from 'axios' import { pick } from 'lodash' import { NextApiRequest, NextApiResponse } from 'next' const baseUrl ='https://myUrl...' const getFromAPIServer = async ( req: NextApiRequest, res: NextApiResponse, ) => { const { productType } = req.query const param = req.query.params //here I tried to add the parameter for filter, which doesn't work const url = `${baseUrl}/${productType}?${param}?` const method = req.method as Method const { body } = req const allowedHeaders = ['If-Match'] const headers = pick(req.headers, allowedHeaders) as Record<string, string> try { const request: AxiosRequestConfig = { method, url, headers: { ...headers, Authorization: `Basic ${process.env.TOKEN}`, 'Content-Type': 'application/json', }, } if (method !== 'GET' && body) { request.data = body } const { data } = await axios.request(request) res.status(200).json(data) } catch (error) { if (!axios.isAxiosError(error)) { throw error } // Return AxiosError to the client res.status(error?.response?.status || 500).json(error?.response?.data) } } export default getFromAPIServer

Y en componentes tengo la función de obtención donde intento obtener la API con filtro

 export const getApiRequest = (url: string) => { const { data } = useQuery(['key', url], async () => { const response = await fetch(url, { method: 'get', }) if (!response.ok) throw new Error(response.statusText) return await response.json() }) return { data } } const { data } = getApiRequest(`${productTypeUrl}?$filter=name eq 'Milk'`)

Olvidé mencionar: en el filtrado de Postman, la API funciona bien. También funciona bien cuando trato de buscar con la URL del filtro en los componentes, sin importar desde la carpeta api .

Actualizar

Hacer el filtering en la carpeta api funciona de la siguiente manera

 const url = `${baseUrl}/${productType}?$filter=name eq 'Milk'?`

Sin embargo, esto no es lo que quiero. Quiero tener un filtro como parámetros en la carpeta API, como productType para poder usarlo en el lado del cliente.

Cualquier ayuda será apreciada

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!