Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda