Skip to content

ceduard0/netbank-clean-architecture-dotnet

Repository files navigation

API Rest

Una API es la forma en como se pueden integrar dos o mas aplicaciones y su uso en Web se conoce como WebApi, que se base en estilo Arquitectonico denominado REST, que a su vez utiliza los siguientes verbos como base para efectuar las operaciones.

  • GET: para Obtener datos, similar al SELECT de la base de datos
  • POST: para enviar informacion o ejecutar un comando, es similar a un INSERT de la base de datos
  • PUT: para actualizar informacion, es similar a un UPDATE de base de datos
  • DELETE: para eliminar informacion y es similar al mismo comando DELETE de la base de datos.

REST (Representational State Transfer) se base principalmente en el protocolo HTTP, por lo cual se hace necesario el uso de HTTP Status Codes para complementar la infromacion retornada por las peticiones hechas a la API.

Estos son algunos de los Status Codes mas utilizados

StatusCode Descripcion Notas
200 OK La peticion fue procesada satisfactoriamente
400 Bad request Normalmente, este código significa que la solicitud contiene secuencias o caracteres no válidos, o que la solicitud va en contra de la configuración de seguridad
404 Not found. Devuelto cuando un recurso no existe en el servidor
500 Internal server error. Este código de estado puede ocurrir por muchas razones del lado del servidor.

Ve las lista completa aqui

Rest API Workshop

Desarrolle una API, llamada NetBank.Api, y cree un controlador (CreditCardController) para validar si una tarjeta de credito es valida y a que franquicia o Red emisora pertenece.

API-Contract

GET : /api/v1/CreditCard/{creditcardNumber}

Tipos de Respuestas:

ValidationSuccess Ok - Status Code: 200 Si el Numero de la tarjeta es correcto y se identifica la red emisora

{
	"issuingNetwork" : "Visa",
	"Valid" : true
}

ValidationFails Ok - Status Code: 200 Si el Numero de la tarjeta NO es correcto (por digito o por longitud) pero SI se identifica la red emisora

{
	"issuingNetwork" : "Visa",
	"Valid" : false
}

BadRequest BadRequest - Status Code: 400 Si lo que se recibe como numero de tarjeta no es un conjunto de numeros

{
	"issuingNetwork" : "Bad Request",
	"Valid" : false
}

Not Found NotFoud - Status Code: 404 Si no es posible encontrar la red Emisora

{
	"issuingNetwork" : "Not Found",
	"Valid" : false
}

Para Obtener y validar la Franquicia o Red Emisora puede utilizar la siguiente tabla:

Franquicia o Red Emisora Inicia con ( o en el rango ) Longitud (Num. de Digitos)
American Express 34, 37 15
Diners Club 300, 301, 302, 303, 304, 305 14
Diners Club - International 36 14
Discover 6011, 622126-622925, 644, 645, 646, 647, 648, 649, 65 16-19
InstaPayment 637, 638, 639 16
JCB 3528-3589 16-19
Maestro 5018, 5020, 5038, 5893, 6304, 6759, 6761, 6762, 6763 16-19
MasterCard 51, 52, 53, 54, 55, 222100 to 272099 16
Visa 4 16-19
Visa Electron 4026, 417500, 4508, 4844, 4913, 4917 16

Para validar una tarjeta utlice el algoritmo de Luhn. Implementación Luhn, gracias a unkdvt

Para realizar pruebas utilice el siguiente Generador

Proyecto

Use el Proyecto NetBank.Api como punto inicial, y adicione los componentes necesarios para implementar la solucion.

Condiciones

  • Distribuya la logica en los componentes necesarios para completar la aplicacion, usando servicios y utilidades para ser utlizadas

Calificacion

  • No tiene Errores Ni Warnings = (0.5)
  • No tiene Codigo Innecesario = (0.5)
  • Funciona y Cumple con el Objetivo = (1.5)
  • El codigo Es Entendible = (1.0)
  • Cumple con el Codigo Limpio = (1.5)

Guias y Practicas de Clean Code

Los Nombres de las variables y Funciones:

  • Revelan la intencion, es decir se sabe que hacen o que almacenan?
  • Los Nombres son claros o son confusos?
  • Son Pronunciables
  • Son buscables (Numero Magicos o No hay Constantes)?
  • tiene notaciones innecesarias IntCodigo, strData) ?
  • Usan Sustantivos para Clases y Verbos para Metodos?
  • Una sola palabra por concepto?
  • No usan combinaciones o juegos de palabras?
  • No tiene contexto adicional o superfluo?
  • Usan Datos del dominio, del negocio, problema o solucion ?
  • Cumplen con el Estandar de Pascal y Camel Case?
  • Son pequeñas y su logica esta bien separada?
  • Las Funciones hacen una sola cosa?
  • Tieen Logica de Retorno directo y correcto o hay If para retornar
  • No Existen Multiples If anidados o SI hay instrucciones Switch

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages