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

234
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
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