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

885
Vistas
¿Cuál es la mejor manera de almacenar URL de API y usarlas en angular?

Quiero almacenar todas las URL de API en un solo lugar, es decir, en un archivo JSON. Quiero usar ese archivo JSON en toda mi aplicación.

i) cuál es la mejor ubicación para guardar el archivo JSON. ii) Cómo usar las URL en el archivo de script Type

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

almacenaría la url base en el entorno.ts

 export const environment = { production: false, baseUrl: 'http://example.com/api' };

y para las URL de API, crearía una enumeración:

 export enum ApiPaths { Auth = '/auth', Foo = '/foo', Bar = '/bar' }

Y luego usarlo en el servicio:

 import { environment } from '../environments/environment'; import { ApiPaths } from '../enums/api-paths'; @Injectable() export class FooService { baseUrl = environment.baseUrl; constructor(private httpClient: HttpClient) { } getAll() { let url = `${this.baseUrl}/${ApiPaths.Foo}/all`; return this.httpClient.get<JSON>(url); } }
over 4 years ago · Santiago Trujillo Denunciar

0

Las otras respuestas proporcionadas brindan excelentes formas de almacenar y acceder a la URL base, personalmente la almaceno en el environment.ts y la inserto en las solicitudes de un HttpInterceptor .

Lo que quiero tratar de abordar en su pregunta es administrar los puntos finales después de la URL base. Esto es algo para lo que me encantaría ver una mejor solución, pero es lo que uso en este momento.

En cada servicio Angular que realiza llamadas http a la API, tengo una propiedad como esta:

 private readonly API_ROUTES = { getUser: (userId: string) => `/user/${userId}` }

Esto es aplicable a mi método de pasar argumentos, si usa parámetros de consulta, puede ajustar esto para manejar eso.

El método correspondiente puede usar esto:

 public getUser(userId: string): Observable<User> { return this.http.get<User>(this.API_ROUTES.getUser(userId)); }

clase de ejemplo completo:

 import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class UserService { private readonly API_ROUTES = { getUser: (userId: string) => `/user/${userId}` } constructor(private http: HttpClient) { } public getUser(userId: string): Observable<User> { return this.http.get<User>(this.API_ROUTES.getUser(userId)); } }

Obviamente, esto podría extraerse aún más para tener todas las rutas API en un archivo en algún lugar, como sugirió otra persona, podría ser simplemente api-routes.ts .

Espero que alguien más tal vez tenga mejores patrones, ya que siento que esta no es la mejor solución.

over 4 years ago · Santiago Trujillo Denunciar

0

En nuestro proyecto hicimos diferentes archivos de entorno para desarrollo, producción, puesta en escena.

medio ambiente.dev.ts

medio ambiente.puesta en escena.ts

medio ambiente.prod.ts

usamos el script package.json para tomar qué URL de API debe cargarse

 "scripts": { "ng": "ng", "start:dev": "ng build --prod -c=dev", "start:qa": "ng build --prod -c=qa", }

por lo que cargará la API requerida

archivo de servicio de ejemplo

 import { Injectable } from '@angular/core'; import { AuthService } from 'src/app/auth.service'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root' }) export class NetworkService { private apiUrl: string = environment.BASE_URI; options; constructor(private authService: AuthService, private http: HttpClient) {} updateNetwork(formValue) { this.authService.loadToken(); const headers = new HttpHeaders().set( 'Authorization', `Bearer ${this.authService.authToken}` ); formValue.nor_id = this.authService.getNorId(); return this.http.post(`${this.apiUrl}/recipe/network`, formValue, { headers }); } }
over 4 years ago · Santiago Trujillo 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