Estoy tratando de pasar una var a axios más por lo que veo, solo acepta cadenas, ¿hay alguna forma de pasar una var?
Mi código:
router.get('/albuns', async (req, res)=>{ const response = await axios.get(req.query.id) return console.log(response) })Error:
Argumento de tipo 'cadena | ParsedQs | cadena[] | ParsedQs[] | undefined' no se puede asignar a un parámetro de tipo 'string'.
El tipo 'indefinido' no se puede asignar al tipo 'cadena'.
Esta es solo una advertencia de TypeScript porque axios.get() espera un argumento de string , pero el req.query predeterminado puede proporcionar varios tipos.
Solo necesitas lanzar el valor.
const response = await axios.get(req.query.id as string);Otra opción es escribir la solicitud en la firma de su controlador
import { Request } from "express"; interface AlbunsQuery { id: string; } type AlbunsRequest = Request<{}, any, any, AlbunsQuery>; router.get("/albuns", async (req: AlbunsRequest, res) => { const response = await axios.get(req.query.id); // etc });Los parámetros de URL no son compatibles y parece que no tienen intención de agregarlos, dado que esperan que use cadenas de plantilla. Aquí hay una discusión: https://github.com/axios/axios/issues/706
El método GET de Axios toma dos argumentos: el primero es la cadena de URL y el segundo argumento, lo configuramos como objeto con la propiedad llamada params.
Código Axios:
axios.get("http://localhost/example"){ params{ name: myName example: 2 }}Código expreso:
app.get("example", (req, res){ const name : request.query.name const example: request.query.example }