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

232
Vistas
¿Cómo escribir una función escrita que administre mis rutas api?

Haciendo un pequeño experimento para reducir el olor del código y en ese esfuerzo estoy tratando de escribir una función escrita que me permita definir mis puntos finales en una ubicación dentro de mi aplicación. La idea es que, si alguna vez cambio o agrego rutas, puedo definirlas en un área que luego se dispersa en la aplicación.

El siguiente ejemplo es donde estoy actualmente. Si bien funciona , todavía es un poco desordenado y no exactamente SECO (repite el valor de enumeración como la path en la función getApiAddress() ).

¿Alguna idea de cómo puedo crear una función que me permita agregar n [] id:string mientras me deshago del {target: '', path: ''} y solo tengo un valor que puede aceptar esos valores de cadena de identificación ?

 const apiAddress = process.env === 'PRODUCTION' ? 'https://some-address.com' : 'http://localhost:5000'; export enum targetsEnum { transcribe = '/services/transcribe', transcribeId = '/services/transcribe/:id', } export type ApiTargets = targetsEnum.transcribe | targetsEnum.transcribeId; export const getApiAddress = (target: ApiTargets, id?: string[]): string => { const endpoints = [ { target: targetsEnum.transcribe, path: '/services/transcribe' }, { target: targetsEnum.transcribeId, path: `/services/transcribe/${id[0]}`, }, ]; const matchingEndpoint = endpoints.find( endpoint => endpoint.target === target ); return `${apiAddress}${matchingEndpoint.path}`; };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

continuó trabajando en esto un poco más.

Con el enfoque a continuación, puede definir sus puntos finales en una ubicación (targetsEnum) y pasar eso a cualquier parte de su aplicación. Luego, el segundo argumento es una matriz de cadenas. Se inyectan en el valor de la enumeración mediante injectPathVariables().

ejemplo:

const endpoint = getApiAddress(ApiEndpointsEnum.youtubeId,['${youtubeId}']);

 const apiAddress = process.env === 'PRODUCTION' ? 'https://some-endpoint.com' : 'http://localhost:5000'; export enum testApiEndpointsEnum { test = '/test', testId = '/test/:id', testIdtestId = '/test/:id/test/:id', } export enum ApiEndpointsEnum { youtube = '/services/youtube', youtubeId = '/services/youtube/:id', transcribe = '/services/transcribe', transcribeId = '/services/transcribe/:id', } export type ApiTargets = | testApiEndpointsEnum.test | testApiEndpointsEnum.testId | testApiEndpointsEnum.testIdtestId // * ^ the TWO above this comment are for testing. | ApiEndpointsEnum.youtube | ApiEndpointsEnum.youtubeId | ApiEndpointsEnum.transcribe | ApiEndpointsEnum.transcribeId const injectPathVariables = ( target: ApiTargets[1], ids: string[] ): string => { let newStr = target; ids.forEach(i => { newStr = newStr.replace(':id', i); }); return newStr; }; const getApiAddress = (target: ApiTargets, ids?: string[]): string => { // * no ids provided + confirmation target doesn't need ids. if (ids === undefined && target.includes(':id') === false) { return `${apiAddress}${target}`; } // * no ids provided, but target does need ids. if ( (ids === undefined || ids.length === 0) && target.includes(':id') === true ) { return `${apiAddress}`; } // * ids have been provided. const injectedOutput = injectPathVariables(target, ids); if (injectedOutput.includes(':id')) { // * but not enough ids were provided for complete injection. return apiAddress; } // * sufficient ids have been provided return `${apiAddress}${injectedOutput}`; };
about 4 years ago · Juan Pablo Isaza Denunciar
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