Saltar al contenido principal

Data Sources

Clases​

Nombrado de clases​

A. Nombrado de interfaces​

Las interfaces de Data Source deben ser nombradas con el prefijo I (de interfaz) y deben utilizar alguno de los sufijos Api, Service o DataSource, según se considere apropiado para la clase.

abstract class IUserApi { }

abstract class IUserPrefsDataSource { }

abstract class IAnalyticsService {}

B. Nombrado de implementaciones de servicios GraphQL​

Las implementaciones de Data Source deben ser tener el mismo nombre base de la interfaz, el mismo sufijo y usar el prefijo GraphQL.


class UserApiGraphQL implements IUserApi { }

class CoreApiGraphQL implements ICoreApi { }

C. Nombrado de implementaciones de servicios REST​

Las implementaciones de Data Source deben ser tener el mismo nombre base de la interfaz, el mismo sufijo y usar el prefijo Rest.


class UserApiRest implements IUserApi { }

class CoreApiRest implements ICoreApi { }

D. Nombrado de implementaciones de otros servicios​

Las implementaciones de Data Source de otros tipos de servicios distintos a APIs GraphQL o REST deben tener la misma terminación de la interfaz que implementa

class RemoteConfigService implements IRemoteSettingsService { }

class AuthFirebaseService implements IAuthService { }

class SharedPreferencesDataSource implements IDeviceStorageDataSource { }

Constructores​

Parámetro URL en constructores​

Los constructores de Data Sources de servicios que realicen llamadas a APIs mediante URL deben recibir un parámetro de tipo String que represente la URL de la API que se va a consumir.

A. Aserción de formato de URLs estándar​

Los constructores de Data Sources de servicios que acepten URLs de APIs deben asercir que las URLs sean válidas según las especificaciones de la plataforma. Algunas aserciones comunes son:

  • La URL debe comenzar con http o https.
  • La URL debe tener un dominio válido.
  • La URL no debe terminar con /.
class DataSource {
DataSource(String url) {
assert(
url.startsWith(RegExp('^https?://')),
'url format error: URL must start with "http://" or "https://" protocol',
);
assert(
!url.endsWith('/'),
'url format error: URL cannot end with slash "/"',
);
}
}

B. Aserción de formato de URLs de GraphQL​

Los constructores de Data Sources de servicios que utilicen URLs de GraphQL deben asercir, adicional a los requisitos de la sección anterior, que las URLs que reciben como parámetros incluyan la ruta /graphql.

class DataSource {
DataSource(String url) {
assert(
url.startsWith(RegExp('^https?://')),
'url format error: URL must start with "http://" or "https://" protocol',
);
assert(
url.endsWith('/graphql'),
'url format error: URL must end with "/graphql"',
);
}
}

Parámetro cliente HTTP en constructores​

Los constructores de Data Sources de servicios que realicen llamadas a APIs HTTP como REST o GraphQL deben recibir un parámetro del tipo cliente que maneje la conexión con la API, usualmente un objeto de tipo http.Client de la librería http.


import 'package:http/http.dart' as http;

class DataSourceHttp {
DataSource(String url, http.Client client) { }
}