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
ohttps
. - 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) { }
}