Files
MyAiConfiguration/shared/rules/angular/references/services-and-http.md
T
2026-09-16 15:24:03 +02:00

1.8 KiB

Dependency Injection

  • Prefer Angular dependency injection for application services.
  • Keep injected dependencies minimal.
  • Avoid service locator patterns.
  • Prefer inject() where it improves readability and is consistent with the project.
  • Do not inject services that are not used.
  • Scope services intentionally.
  • Prefer application-wide singletons only for truly shared stateless or coordinated state.
  • Avoid storing request-specific or component-specific mutable state in root services.
  • Use injection tokens for configuration or abstractions where appropriate.
  • Do not create interfaces only to satisfy dependency injection when no abstraction is needed.

Services

  • Keep services focused on a clear responsibility.
  • Avoid large catch-all services.
  • Separate API access, domain logic and UI state where practical.
  • Avoid leaking transport models throughout the application.
  • Do not expose mutable internal state directly.
  • Prefer readonly APIs for state consumers.
  • Avoid hidden side effects.
  • Keep service methods predictable.
  • Do not use services merely to move poorly structured component code elsewhere.

HTTP and APIs

  • Keep API access centralized and strongly typed.
  • Prefer dedicated API clients or data-access services.
  • Do not use any for API responses.
  • Treat all server responses as untrusted at runtime.
  • Validate external data when the contract is security- or correctness-critical.
  • Keep DTOs separate from domain models when their responsibilities differ.
  • Avoid duplicate API calls.
  • Cache only when the invalidation strategy is clear.
  • Avoid manual URL string construction when typed helpers or centralized endpoints are available.
  • Use interceptors only for cross-cutting concerns.
  • Do not put unrelated business logic into HTTP interceptors.
  • Handle cancellation where appropriate.
  • Handle expected error states explicitly.