Documento Buenas Practicas
Documento Buenas Practicas
Documento Buenas Practicas
Tabla de contenido
1 Introducción .................................................................................................................7
1.1 Propósito ..................................................................................................................7
1.2 Alcance .....................................................................................................................7
1.3 Acrónimos y términos ..............................................................................................7
1.3.1 Acrónimos.........................................................................................................7
1.3.2 Términos ...........................................................................................................7
1.4 Audiencia destino .....................................................................................................7
1.5 Estructura del documento........................................................................................7
2 Introducción a las buenas prácticas del desarrollo en .Net C# ....................................8
3 Convenciones de nomenclatura ...................................................................................9
3.1 Nombres descriptivos...............................................................................................9
3.2 Nomenclatura PascalCase Vs CamelCase .............................................................. 10
3.3 Evitar el uso de abreviaturas ambiguas ................................................................ 12
3.4 Utilizar nombres de archivos descriptivos ............................................................ 12
4 Estructura del proyecto ............................................................................................. 13
4.1 Organizar el proyecto en capas ............................................................................. 14
4.1.1 Capa de Presentación (UI) ............................................................................. 14
4.1.2 Capa de Lógica de Negocio (Business Logic) ................................................. 14
4.1.3 Capa de Acceso a Datos (Data Access) .......................................................... 14
4.1.4 Capa de Infraestructura................................................................................. 14
4.2 Pruebas unitarias ................................................................................................... 15
4.2.1 Aseguran la calidad del software .................................................................. 15
4.2.2 Facilitan el mantenimiento del código .......................................................... 15
4.2.3 Promueven un diseño modular y desacoplado ............................................. 15
4.2.4 Mejoran la colaboración y la productividad del equipo................................ 15
4.2.5 Impulsan la refactorización segura ............................................................... 15
4.3 Control de versiones ............................................................................................. 17
4.3.1 Utilizar un sistema de control de versiones .................................................. 17
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 3 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 4 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 5 de 56
24 Referencias ................................................................................................................ 56
24.1 Convenciones de código de C# comunes .......................................................... 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
HISTORIAL DE VERSIONES Y REVISIONES
1.1 Propósito
1.2 Alcance
Para mayor detalle de las definiciones de los acrónimos y términos mencionados en este
documento consulte el glosario de términos el cual se encuentra almacenado en el Repositorio de
Documentación, proceso DP_DefinicionProceso.
1.3.1 Acrónimos
• No Aplica
1.3.2 Términos
• No aplica
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 9 de 56
3 Convenciones de nomenclatura
3.1 Nombres descriptivos.
Los nombres de métodos clases y variables deben ser claros, fáciles de entender y
descriptivos en su estructura, con el fin de facilitar a cualquier lector del código el rápido
entendimiento de este.
Por ejemplo:
Nombre significativo para la variable fechaCaducidad
Se observa el nombre significativo fecha de caducidad, el cual sin dar mucho contexto
representa una fecha en la que caduca algún producto o proceso de tipo de dato DateTime.
Nombre significativo para una función, al igual que el ejemplo anterior, se puede
tener un nombre que represente claramente el resultado de una función, por ejemplo:
Nombre significativo para la función calcularPromedio
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 10 de 56
Al igual que en los anteriores casos, el nombre nos representa de manera clara y
concisa lo que queremos almacenar en dicha variable.
Además, al igual que hemos declarado variables, contantes, funciones y clases,
también es necesario nombrar los parámetros de forma significativa, en el siguiente
ejemplo tenemos una función que retornara los años transcurridos dada una fecha inicial
hasta hoy, la cual maneja un principio de nombres representativos tanto en la función como
en sus parámetros.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 11 de 56
En este ejemplo, se utiliza CamelCase para los nombres de las variables "edadUsuario"
y "nombreCompleto". La primera letra es minúscula y las primeras letras de las palabras
siguientes se capitalizan. Esto ayuda a distinguir y entender rápidamente el propósito de las
variables.
También, es posible realizar nombramiento de propiedades con esta nomenclatura
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 12 de 56
La abreviatura "db" puede ser ambigua y no indica claramente que se trata de una
conexión a una base de datos. Esto puede llevar a confusiones y malentendidos al leer y
modificar el código.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 13 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 14 de 56
Es importante tener en cuenta que esta es solo una sugerencia de cómo organizar el
proyecto en capas. La estructura exacta puede variar según las necesidades y complejidad
del proyecto. Además, es recomendable utilizar principios de diseño sólidos, como el
Principio de Responsabilidad Única (SRP) y la Inyección de Dependencias (DI), o modelos
como MVC, para mantener una separación adecuada entre las capas y facilitar la prueba y
la escalabilidad del software.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 15 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 16 de 56
unitarias efectivas, se obtiene un código más robusto y confiable, así como un proceso de
desarrollo más eficiente.
Por ejemplo:
Supongamos que tienes una clase llamada Calculadora que contiene métodos para
realizar operaciones aritméticas simples sumar y restar. Vamos a escribir pruebas unitarias
para verificar el comportamiento de estos métodos.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 17 de 56
Dentro de cada método de prueba, seguimos el patrón AAA (Arrange, Act, Assert). En
la sección "Arrange", configuramos el escenario de prueba, creando una instancia de la clase
Calculadora. En la sección "Act", llamamos al método que queremos probar y almacenamos
el resultado. En la sección "Assert", verificamos si el resultado obtenido coincide con el
resultado esperado utilizando los métodos de aserción proporcionados por NUnit, en este
caso Assert.AreEqual().
Para ejecutar estas pruebas, necesitarías tener NUnit instalado y configurado en tu
entorno de desarrollo. Luego, puedes ejecutar las pruebas y verificar si pasan
correctamente.
Las pruebas unitarias en este ejemplo validan que los métodos Sumar() y Restar() de
la clase Calculadora funcionen según lo esperado. Si las pruebas pasan, podemos tener
confianza en que estos métodos se comportan correctamente. Si alguna prueba falla,
podemos investigar y corregir el problema antes de que se propague a otras partes del
código.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 18 de 56
vez que la funcionalidad esté completa, realiza una solicitud de extracción (pull request)
para fusionar los cambios en la rama principal después de una revisión y prueba adecuadas.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 19 de 56
5 Patrones de Diseño
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 20 de 56
5.1.1 Ejemplos
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 21 de 56
A continuación señalamos algunas situaciones en las que puede ser apropiado utilizar
el patrón Factory Method:
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 22 de 56
5.2 Builder
El patrón Builder permite crear objetos complejos paso a paso, separando la lógica de
construcción de la representación final del objeto. Esto proporciona flexibilidad para crear
diferentes variaciones de un objeto utilizando un único proceso de construcción. Además,
el patrón Builder puede mejorar la legibilidad y mantenibilidad del código, especialmente
cuando se trabaja con objetos con muchas configuraciones y opciones.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 23 de 56
5.2.1 Ejemplos
A continuación señalamos algunas situaciones en las que puede ser apropiado utilizar
el patrón Builder:
• Creación de objetos con múltiples configuraciones: Cuando necesitas crear
objetos que tienen muchas configuraciones opcionales o diferentes
variaciones. En lugar de tener un constructor con una lista larga de parámetros
o múltiples constructores sobrecargados, el patrón Builder te permite
construir el objeto paso a paso, configurando solo las opciones necesarias.
• Creación de objetos inmutables: Si deseas construir objetos inmutables, es
decir, objetos cuyos estados no se pueden modificar después de la creación,
el patrón Builder puede ser útil. Puedes utilizar el Builder para establecer los
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 24 de 56
5.3 Facade
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 25 de 56
5.3.1 Ejemplos
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 26 de 56
5.4 Strategy
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 27 de 56
5.4.1 Ejemplos
• Ordenamiento de datos:
Imagina que estás desarrollando una aplicación que necesita ordenar una lista de
elementos, pero la forma de ordenar puede variar según las necesidades del usuario.
Puedes utilizar el patrón Strategy para implementar diferentes estrategias de
ordenamiento, como ordenamiento por burbuja, ordenamiento por inserción o
ordenamiento rápido. Cada estrategia implementaría el algoritmo de ordenamiento
correspondiente y se podría seleccionar dinámicamente la estrategia adecuada según la
preferencia del usuario.
• Procesamiento de archivos:
Supongamos que estás creando una herramienta de procesamiento de archivos que
puede realizar diferentes operaciones, como compresión, encriptación o conversión de
formatos. Utilizando el patrón Strategy, puedes implementar cada una de estas operaciones
como una estrategia separada. El usuario puede seleccionar la estrategia deseada y la
herramienta aplicará la operación correspondiente al archivo, sin preocuparse por los
detalles de implementación específicos.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 28 de 56
• Cálculo de impuestos:
En una aplicación financiera, es posible que debas realizar cálculos de impuestos
sobre diferentes tipos de transacciones, como ventas, compras o inversiones. Cada tipo de
transacción puede tener reglas de cálculo de impuestos específicas. Utilizando el patrón
Strategy, puedes implementar cada regla de cálculo de impuestos como una estrategia
separada. Al procesar una transacción, se selecciona la estrategia de cálculo de impuestos
correspondiente al tipo de transacción y se realiza el cálculo adecuado.
5.5 Mediator
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 29 de 56
sistema. Su objetivo es definir un objeto mediador que coordine las interacciones entre
varios objetos sin que estos se conozcan directamente.
Así funciona el patrón Mediator:
• Mediador: El patrón Mediator se basa en la existencia de un objeto mediador
central que controla y coordina las interacciones entre los componentes del
sistema. El mediador es responsable de conocer a todos los componentes y
sus respectivas interfaces de comunicación.
• Componentes: Los componentes son objetos que interactúan entre sí, pero en
lugar de comunicarse directamente, se comunican a través del mediador. Cada
componente tiene una referencia al mediador y utiliza métodos del mediador
para enviar y recibir mensajes.
• Comunicación indirecta: En lugar de los componentes comunicándose
directamente entre sí, envían mensajes al mediador, quien se encarga de
dirigir el mensaje al componente adecuado. Esto reduce el acoplamiento entre
componentes, ya que no necesitan conocerse entre sí, solo necesitan conocer
al mediador.
• Desacoplamiento: El patrón Mediator promueve un desacoplamiento entre
los componentes. Cada componente solo necesita conocer al mediador y no
necesita conocer los detalles internos de los demás componentes. Esto facilita
la extensibilidad y el mantenimiento del sistema, ya que los cambios en un
componente no afectan directamente a otros componentes.
• Centralización del control: El mediador asume la responsabilidad de coordinar
las interacciones entre los componentes. Puede manejar la lógica de negocios,
tomar decisiones basadas en la información recibida de los componentes y
dirigir las respuestas apropiadas a los destinatarios adecuados.
5.5.1 Ejemplos
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 30 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 31 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 32 de 56
6 Manejo de Excepciones
Una de las buenas prácticas en un desarrollo de software de excelente calidad, es el
manejo y control de las excepciones o comúnmente llamados control de errores. Según
Microsoft, “una aplicación diseñada correctamente controla los errores y excepciones para
evitar que está se bloquee”.
Es importante conocer y saber en qué bloques de código se deben utilizar estos
controles ya que no en todos los casos es provechoso realizar esta práctica, en pocas
palabras, no todo el código debe llevar un control de excepciones.
También es importante que las excepciones controlan errores que pueda suceder en
tiempo de ejecución mas no errores de sintaxis o mala argumentación de los métodos.
En el siguiente ejemplo se utilizará la buena práctica de control de errores y
excepciones utilizando Try – Cathc- Finally
Es importante tener en cuenta que cada una de las capas del desarrollo realizado debe
contar con su respectivo método de capturar las excepciones y realizar la respectiva
transmisión o registro de estos, es necesario que ninguna capa se quede con el error.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 33 de 56
7 Seguridad
Aplicar buenas prácticas de seguridad en el desarrollo de software en .NET es
fundamental para proteger la aplicación y los datos sensibles de posibles amenazas, es por
esta razón que al momento de desarrollar software es recomendable contar con los
siguientes ítems:
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 34 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 35 de 56
8 Optimización de rendimiento
Una de las buenas prácticas y necesidades de cualquier desarrollo de software es la
optimización de rendimiento, un desarrollo de software que cuenta con esta buena práctica
se puede considerar como un desarrollo de alta calidad
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 36 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 37 de 56
9 Documentación de código
El proceso de documentación de código es muy importante ya que nos ayuda a
entender mas lo que el desarrollador quiso realizar en cada una de la funciones, clases o
métodos, es un complemento al nombramiento significativo que se mencionó en el anterior
capítulo.
Es necesario realizar este proceso de forma adecuada realizando comentarios dentro
las líneas de código de manera que esta información pueda resultar útil para quien lee o
analiza el código desarrollado, una buena documentación facilita el desarrollo colaborativo
o en equipo y el mantenimiento del desarrollo a corto o largo plazo.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 38 de 56
describe claramente lo que se quiere realizar, pasando por la declaración de las variables
del objeto, su respetivo constructor y los métodos para obtener los datos.
Esta documentación se puede generar a través de herramientas de documentación
como Sandcastle o VisualStudio por medio de la opción de build documentation.
Generalmente estas documentaciones se generan utilizando plugins descargables desde el
nugget package de la aplicación.
Actualmente existen herramientas como SHFB Sandcastle Help File Builder, Doxygen
o DocFX, los cuales pueden ayudar al proceso de documentación tanto para proyectos de desarrollo
web como para proyectos de web api, para el caso de DocFX.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 39 de 56
10 Expresiones Lambda
Una expresión lambda se utiliza para crear una función anónima, normalmente se
utiliza para simplificar la escritura del código. Una expresión lambda puede tener cualquiera
de las siguientes dos formas.
(input-parameters) => expresión
Las expresiones lambda son especialmente útiles en combinación con LINQ.
Por ejemplo:
Expresión Lambda para ordenar una lista de números
En el ejemplo anterior se observa una variable de tipo lista llamada números que
contiene un grupo de números entre cero y nueve generados de manera aleatoria, y por
otra parte se desea crear una función que organice los números de menor a mayor, pero en
este caso dicha función no será creada como tal, sino que se utilizará una expresión lambda
para realizar dicha funcionalidad. Para esto, se utilizará el método Sort(), el cual recibe a la
expresión lambda(a,b) => a.compareTo.(b), esto hará que la expresión por si misma recorra
todo el objeto y compare uno por uno hasta obtener el orden solicitado.
En el anterior ejemplo se crea una funcionalidad que busca filtrar los nombres que
tiene una longitud menor o igual a 3 caracteres. la cual utiliza la sentencia de LinQ Where
para desarrollar esta labor y utiliza la expresión lambda para extraer los nombres de la lista
y compararlos con la condición <=3. Como resultado se tiene que solamente uno de los
nombres cumple dicha condición.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 40 de 56
En este ejemplo, se utiliza LINQ para aplicar una consulta sobre la lista de personas
mediante el método Where(). Dentro de este método, se especifica una expresión lambda
que define el criterio de filtrado, en este caso, p => p.Edad > 30. Esto significa que se
seleccionarán las personas cuya edad sea mayor a 30.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 41 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 42 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 43 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 44 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 45 de 56
Por ejemplo:
Supongamos que necesitas realizar operaciones matemáticas comunes en diferentes
partes de tu aplicación. Puedes crear una clase de utilidad llamada "Calculadora" que
contenga métodos estáticos para realizar estas operaciones. De esta manera, podrás
reutilizar el código de la clase "Calculadora" en diferentes partes de tu código sin tener que
repetir la implementación de las operaciones matemáticas.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 46 de 56
14 Uso de interfaces
el uso de interfaces en el desarrollo de software en .NET C# tiene múltiples beneficios,
como abstracción, separación de responsabilidades, interoperabilidad, facilidad de testing
y mantenibilidad del código. Estas ventajas contribuyen a un código más modular, flexible
y fácil de comprender, lo que en última instancia mejora la calidad y la eficiencia del
software desarrollado.
Supongamos que estás desarrollando un sistema de gestión de empleados y tienes
una clase Empleado que representa a un empleado en la empresa. Además, tienes
diferentes tipos de empleados, como Desarrollador y Gerente, que tienen funcionalidades
específicas.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 47 de 56
15 Inyección de dependencias
En este ejemplo, tenemos una interfaz IServicioCorreo que define el contrato para el
envío de correos electrónicos, y una clase ServicioCorreo que implementa esta interfaz.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 48 de 56
La clase Cliente depende del servicio de correo para enviar notificaciones, y recibe
una instancia de IServicioCorreo a través de su constructor. Al utilizar la inyección de
dependencias por constructor, el cliente no necesita crear directamente una instancia del
servicio de correo, sino que se le suministra desde el exterior.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 49 de 56
16 Bloque Using
El bloque using en C# se utiliza para garantizar la liberación adecuada de recursos no
administrados, como archivos, conexiones de bases de datos o cualquier objeto que
implemente la interfaz IDisposable. El bloque using asegura que los recursos se liberen
automáticamente al finalizar su uso, incluso si se produce una excepción.
El siguiente es un ejemplo de cómo se utiliza el bloque using para trabajar con un
archivo y garantizar su cierre y liberación de recursos:
En este ejemplo, se crea una clase MiClase que implementa la interfaz IDisposable.
Esta interfaz requiere la implementación del método Dispose(), que se encargará de liberar
los recursos cuando se utilice el bloque using.
Dentro de la clase MiClase, se tiene un método llamado Metodo() que simplemente
muestra un mensaje en la consola.
En el método Main(), se utiliza el bloque using para crear una instancia de MiClase.
Dentro del bloque using, se llama al método Metodo(). Al finalizar el bloque using, se
llamará automáticamente al método Dispose() de MiClase, lo que mostrará el mensaje
"Liberando recursos".
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 50 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 51 de 56
POST: Se utiliza para crear nuevos recursos en el servidor. Se envían los datos
necesarios en el cuerpo de la solicitud para que el servidor los procese y cree un nuevo
recurso.
Crear un nuevo usuario: POST /api/users
Agregar un nuevo producto al carrito de compras: POST /api/cart
Es importante utilizar los métodos HTTP de acuerdo con su función principal y seguir
las convenciones establecidas en el diseño de API REST. Esto garantiza una comunicación
clara y predecible entre los clientes y el servidor, además de facilitar la interoperabilidad y
el consumo adecuado de la API. Cada método tiene sus características y restricciones, y al
elegir el método correcto para cada operación, se logra una API REST bien estructurada y
fácil de usar.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 52 de 56
19 Códigos de estados
Al momento de crear una API REST, es importante utilizar correctamente los códigos
de estados, ya que estos se convierten en el idioma universal de las API’s. Los códigos de
estado HTTP proporcionan información sobre el resultado de una solicitud realizada a la API
y son una parte esencial de la comunicación entre el servidor y el cliente. Aquí tienes una
descripción de algunos códigos de estado HTTP comúnmente utilizados y su significado:
200 OK: Indica que la solicitud se ha realizado correctamente y que se devuelve una
respuesta exitosa. Este código se utiliza para respuestas exitosas en general.
201 Created: Se utiliza cuando se ha creado un nuevo recurso correctamente. Es
comúnmente devuelto después de una solicitud POST exitosa para indicar que el recurso se
ha creado satisfactoriamente.
204 No Content: Indica que la solicitud se ha completado con éxito, pero no se
devuelve ningún contenido en la respuesta. Este código se utiliza a menudo para respuestas
a solicitudes DELETE o PUT donde no se requiere enviar datos adicionales en la respuesta.
400 Bad Request: Indica que la solicitud del cliente es incorrecta o no se puede
procesar por parte del servidor debido a un formato inválido, datos faltantes o cualquier
otro error en la solicitud del cliente.
401 Unauthorized: Indica que la solicitud requiere autenticación del cliente. Este
código se utiliza cuando el cliente no ha proporcionado las credenciales necesarias o las
credenciales proporcionadas son inválidas.
403 Forbidden: Indica que el cliente no tiene permisos para acceder al recurso
solicitado. A diferencia del código 401, el cliente ya ha sido autenticado, pero no tiene los
permisos necesarios para acceder al recurso.
404 Not Found: Indica que el recurso solicitado no se encuentra en el servidor. Es
comúnmente devuelto cuando se accede a una URL que no existe o cuando se busca un
recurso que no está disponible.
500 Internal Server Error: Indica un error interno en el servidor que impide que se
maneje la solicitud correctamente. Este código se utiliza cuando ocurre un error inesperado
en el servidor.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 53 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 54 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 55 de 56
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO
Documento de buenas prácticas .Net Página 56 de 56
22 Referencias
Con el fin de obtener otros puntos de vista se comparten enlaces hacia otros autores
como Microsoft la cual cuenta con una serie de buenas paracticas y estándares para el
proceso de desarrollo de software.
Fecha de publicación: 06/03/2024 Las copias impresas no están controladas Uso INTERNO