Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

278
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda