CursosEmpresasBlogLiveConfPrecios

Probando API con una base de datos SQL server

Clase 21 de 22 • Curso de APIs con .NET

Clase anteriorSiguiente clase

Contenido del curso

Introducción a API en .NET
  • 1
    Domina las API con .NET

    Domina las API con .NET

    02:50
  • 2
    Prerrequisitos

    Prerrequisitos

    02:36
  • 3
    ¿Qué es una API?

    ¿Qué es una API?

    04:22
  • 4
    ¿Qué es REST?

    ¿Qué es REST?

    08:18
  • 5
    Creando tu primera API con .NET

    Creando tu primera API con .NET

    04:04
Funcionamiento de una API en .NET
  • 6
    Consumiendo API desde Postman

    Consumiendo API desde Postman

    05:33
  • 7
    Análisis del template para APIs de .NET

    Análisis del template para APIs de .NET

    10:51
  • 8
    Atributos para verbos HTTP

    Atributos para verbos HTTP

    14:56
  • 9
    Manejo de rutas

    Manejo de rutas

    09:51
  • 10
    Minimal API vs. Web API

    Minimal API vs. Web API

    08:36
Arquitectura y configuración
  • 11
    ¿Qué son los middlewares?

    ¿Qué son los middlewares?

    08:54
  • 12
    Creando un nuevo middleware

    Creando un nuevo middleware

    14:46
  • 13
    Inyección de dependencias

    Inyección de dependencias

    16:43
  • 14
    Agregando Logging a API

    Agregando Logging a API

    09:25
  • 15
    Documentando API con Swagger

    Documentando API con Swagger

    08:03
Manipulación de datos con Entity Framework
  • 16
    Agregando librerías para Entity Framework

    Agregando librerías para Entity Framework

    04:38
  • 17
    Configuración de Entity framework y clases base

    Configuración de Entity framework y clases base

    08:31
  • 18
    Creación de servicios

    Creación de servicios

    12:24
  • 19
    Inyectando servicios como dependencia

    Inyectando servicios como dependencia

    04:43
  • 20
    Creando controladores

    Creando controladores

    11:32
  • 21
    Probando API con una base de datos SQL server

    Probando API con una base de datos SQL server

    14:03
Outro
  • 22
    Retrospectiva: APIs con .NET

    Retrospectiva: APIs con .NET

    03:05
    Randall Chacón Sarmiento

    Randall Chacón Sarmiento

    student•
    hace 3 años

    Como aprendimos en el curso EF podemos utilizar el archivo appsettings.json para colocar la conexión a la base de datos

    { "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "cnHomeworks" : "Data Source=MYCOMPUTER\\SQLEXPRESS01;Initial Catalog=HomeworksDB;user id=usuario; password=contrasenna" } }

    Posteriormente en Program.cs llamamos a esa conexión

    builder.Services.AddSqlServer<HomeworksContext>(builder.Configuration.GetConnectionString("cnHomeworks"));

    Como buena práctica yo agrego al .gitignore el appsettings.json para no exponer mis credenciales. Pueden utilizar el comando de git

    git rm -r --cached .

    para borrar la cache y que reconozca que estamos ignorando appsettings.json, luego solamente le dan un commit y un push al repositorio remoto.

    Espero les sirva pura vida!

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Gracias por compartirlo esta parte faltó en este curso de APIs pero efectivamente se incluyó en el curso de Entity framework

      Edgar Matias Candia Arguello

      Edgar Matias Candia Arguello

      student•
      hace 3 años

      buen aporte amigo

    Andre Huaman Yovera

    Andre Huaman Yovera

    student•
    hace 3 años

    Solución para problema de la propiedad Tarea requerida . En el modelo de Categoria puedes agregar el simbolo ? en la propiedad de Tareas para que acepte null; con eso no te deberia de pedir esa valor en el post.

    public virtual ICollection<Tarea>? Tareas {get;set;}

    . Créditos a jgomez_89 por su aporte, en la sección de preguntas.

      Jose Ricardo Bernal Leon

      Jose Ricardo Bernal Leon

      student•
      hace 3 años

      Excelente aporte amigo, me quito unos dolores de cabeza...🚀💻.

    Nicolas Vergara

    Nicolas Vergara

    student•
    hace 3 años

    Para los que siguieron el curso de Entity Framework (anterior a este), no se les olvide que no es necesario incluir en el HelloWorld el tema de create database, recuerden que pueden crear una migración inicial:

    dotnet ef migrations add InitialCreation

    Y luego actualizar la base de datos:

    dotnet ef database update

    Asi queda mas organizado el proyecto.

    José Javier Vásquez Ramos

    José Javier Vásquez Ramos

    student•
    hace 4 años

    Para las personas que le generen un problema en el Post o Put al momento de enviar objeto por el Body, pidiendole como requerido la propiedad de navegacion del modelo, esto lo provoca el decorador o data annotation [ApiController], esto provoca algo que produce un 400 Bad Request.

      Elvis Salvatierra

      Elvis Salvatierra

      student•
      hace 3 años

      pedia el field Tareas

      José Javier Vásquez Ramos

      José Javier Vásquez Ramos

      student•
      hace 3 años

      Efectivamente pedia Tareas y esta es una propiedad de navegacion, no deberia requerirla, [ApiController] posee las validaciones para el ModelState por defecto, sin que tu explicitamente lo coloques, puedes quitarle esta anotacion al controlador pero realmente investigando me di cuenta que no es la mejor practica, en este caso lo mejor seria agregarle a la propiedad en el modelo una data annotation [ValidateNever], esto hace que para la propiedad que la posee, el ModelState no tenga efecto en ella.

    Willian Deivy Hoyos Home

    Willian Deivy Hoyos Home

    student•
    hace 3 años

    si tienen este error : A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - La cadena de certificación fue emitida por una entidad en la que no se confía.)

    pongan esto al final de la conexión Encrypt=False

      Byron Asencio

      Byron Asencio

      student•
      hace 3 años

      Gracias amigo, justo me salía este fallo y no daba.

      sergio Castro cano

      sergio Castro cano

      student•
      hace 2 años

      Gracias amigo me pasaba lo mismo

    Leonardo Ibrahim Ramirez Sosa

    Leonardo Ibrahim Ramirez Sosa

    student•
    hace 2 años

    Si al momento de realizar el post de una categoria o tarea, no guarda nada en la base de datos, traten de cambiar el metodo de la siguiente manera:

    [HttpPost]    public async Task<``IActionResult``> Post([FromBody] Categoria ``categoria``)    {        await categoriaService.Save(``categoria``);        return Ok();    }

    David Girón

    David Girón

    student•
    hace 3 años

    Por si a alguno le genera este error "(A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - La cadena de certificación fue emitida por una entidad en la que no se confía.)' )"

    Pongan esto al final de la conexión "TrustServerCertificate=True"

    NELSON FERNANDO PINZON ARANZAZU

    NELSON FERNANDO PINZON ARANZAZU

    student•
    hace 3 años

    Cadena de conexión para postgresql

    builder.Services.AddNpgsql<TareasContext>("Host=localhost;Username=postgres;Password=postgres;Database=TareasDb");
    Jeremy Rodriguez

    Jeremy Rodriguez

    student•
    hace 2 años

    Abril 2024 Si no se les refleja en la Base de Datos al hacer el Post en Categoria o Tarea deben corregirlo en el Controller correspondiente y ponerlo de esta manera [HttpPost]        public async Task<IActionResult> Post([FromBody] Categoria categoria)        {

    await categoriaService.Save(categoria);           

    return Ok();       

    }

    El problema radica en el hecho de que no se está esperando a que la operación de guardado se complete antes de devolver la respuesta. Cuando usas await, el controlador espera a que la operación de guardado se complete antes de continuar, lo que asegura que los cambios se reflejen en la base de datos antes de que se envíe la respuesta al cliente.

      Rena Salazar Curiel

      Rena Salazar Curiel

      student•
      hace 2 años

      👌🏻

      Lizzeth Alina Neyra Herrera

      Lizzeth Alina Neyra Herrera

      student•
      hace un año

      Genial, gracias!

    Marcelo Humerez

    Marcelo Humerez

    student•
    hace 3 años

    Excelente curso, el profe super detallista. He llegado a entender mejor el funcionamiento de APis. Me gusto mucho como funciona Entity Framework, voy a profundizar mas al respecto.

    Mi conexion con Postgres tenia error UTC y lo solucione añadiendo codigo en program.cs despues de using ...

    AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
    Steven Rendon

    Steven Rendon

    student•
    hace 3 años

    Pregunta

    A alguien le pasò que desde esta API no funciona correctamente el Fluent API, me pasò que tenia varios campos como ".IsRequired(false)" y me los seguia solicitando como requerido. Alguien me ayuda por favor.

    task.Property(p => p.Resumen).IsRequired(false);

    Tambien la puse como ignore

    task.Ignore(p => p.Resumen);
    { "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "One or more validation errors occurred.", "status": 400, "traceId": "00-ce79aa6c8d14b6dae8b92351ef5e5cc3-ae4c39a536dc62dd-00", "errors": { "Resumen": [ "The Resumen field is required." ] } }

    La unica forma que me funciona es agregando el signo "?" en el modelo. Entiendo que esto se puede hacer, sin embargo, se supone que el Fluent API permite hacer este tipo de restricciones.

    public string? Resumen { get; set; }

    Gracias por la atenciòn.

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Debes colocar el campo como nullable sino, no te funciona, despues EF no funcionaria correctamente, es para prevenir errores.

    joan luna

    joan luna

    student•
    hace 4 años

    Cual seria la manera de conectarlo pero con mysql ?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 4 años

      Puedes revisar este paquete a ver si te sirve: https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql/

      Aca esta la documentación, se implementa igual y es bastante fácil de usar: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

    NELSON FERNANDO PINZON ARANZAZU

    NELSON FERNANDO PINZON ARANZAZU

    student•
    hace 3 años

    Si tienen problemas con postgresql antes del EnsureCreated deben adicionar la linea AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);

    [HttpGet] [Route("createdb")] public IActionResult CreateDatabase() { AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); dbcontext.Database.EnsureCreated(); return Ok(); }
    Anderson Duarte Santos

    Anderson Duarte Santos

    student•
    hace 3 años

    Tengo un problema implementando el método "Post" y "Put", estuve mirando y de momento no he podido encontrar otra solución que dejar directamente el método del servidor en el controller. Aclaro que esto me pasa tanto para categoría como tarea. Más adelante seguiré intentando solucionar el problema y es que también me gustaría retornar el "objeto" desde el servicio, para poder indicar que se creo o se modifico y quedo de cierta forma. Mientras tanto dejo el error que me salio. Nota: Este error tiene varias etapas, en el primer Request no realiza la conexión a base de datos o queda como tarea incompleta, y en la segunda petición si inserta el registro pero aún así me sale un error. Les agradecería la ayuda.

    Entity Framework Core 6.0.3 initialized 'TareasContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:6.0.3' with options: None fail: Microsoft.EntityFrameworkCore.Database.Connection[20004] An error occurred using the connection to database 'Platzi2' on server 'myservidor'. info: Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 6.0.3 initialized 'TareasContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:6.0.3' with options: None fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HMJ57KPVIEF5", Request id "0HMJ57KPVIEF5:00000003": An unhandled exception was thrown by the application. System.InvalidOperationException: There is already an open DataReader associated with this Connection which must be closed first. at Microsoft.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) at Microsoft.Data.SqlClient.SqlInternalTransaction.Rollback() at Microsoft.Data.SqlClient.SqlTransaction.Dispose(Boolean disposing) at System.Data.Common.DbTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.ResetStateAsync(Boolean disposeDbConnection) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.EntityFrameworkCore.DbContext.DisposeAsync() at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.AspNetCore.Http.Features.RequestServicesFeature.<DisposeAsync>g__Awaited|9_0(RequestServicesFeature servicesFeature, ValueTask vt) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<FireOnCompleted>g__ProcessEvents|227_0(HttpProtocol protocol, Stack1 events) info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (123ms) [Parameters=[@p0='?' (DbType = Guid), @p1='?' (Size = 150), @p2='?' (Size = 150), @p3='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30'] SET NOCOUNT ON; INSERT INTO [Categoria] ([CategoriaId], [Descripcion], [Nombre], [Peso]) VALUES (@p0, @p1, @p2, @p3); info: Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 6.0.3 initialized 'TareasContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:6.0.3' with options: None info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (31ms) [Parameters=[@p0='?' (DbType = Guid), @p1='?' (Size = 150), @p2='?' (Size = 150), @p3='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30'] SET NOCOUNT ON; INSERT INTO [Categoria] ([CategoriaId], [Descripcion], [Nombre], [Peso]) VALUES (@p0, @p1, @p2, @p3); fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HMJ57KPVIEF5", Request id "0HMJ57KPVIEF5:00000004": An unhandled exception was thrown by the application. System.InvalidOperationException: The connection does not support MultipleActiveResultSets. at Microsoft.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) at Microsoft.Data.SqlClient.SqlInternalTransaction.Rollback() at Microsoft.Data.SqlClient.SqlTransaction.Dispose(Boolean disposing) at System.Data.Common.DbTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.ResetStateAsync(Boolean disposeDbConnection) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.EntityFrameworkCore.DbContext.DisposeAsync() at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.AspNetCore.Http.Features.RequestServicesFeature.<DisposeAsync>g__Awaited|9_0(RequestServicesFeature servicesFeature, ValueTask vt) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<FireOnCompleted>g__ProcessEvents|227_0(HttpProtocol protocol, Stack1 events) info: Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 6.0.3 initialized 'TareasContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:6.0.3' with options: None info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (3ms) [Parameters=[@p0='?' (DbType = Guid), @p1='?' (Size = 150), @p2='?' (Size = 150), @p3='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30'] SET NOCOUNT ON; INSERT INTO [Categoria] ([CategoriaId], [Descripcion], [Nombre], [Peso]) VALUES (@p0, @p1, @p2, @p3); fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HMJ57KPVIEF5", Request id "0HMJ57KPVIEF5:00000005": An unhandled exception was thrown by the application. Microsoft.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (258): Tiempo de espera de la operación de espera agotado. at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at Microsoft.Data.SqlClient.TdsParser.DrainData(TdsParserStateObject stateObj) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) at Microsoft.Data.SqlClient.SqlInternalTransaction.Rollback() at Microsoft.Data.SqlClient.SqlTransaction.Dispose(Boolean disposing) at System.Data.Common.DbTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.DisposeAsync() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.ResetStateAsync(Boolean disposeDbConnection) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.EntityFrameworkCore.DbContext.DisposeAsync() at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<DisposeAsync>g__Await|22_0(Int32 i, ValueTask vt, List1 toDispose) at Microsoft.AspNetCore.Http.Features.RequestServicesFeature.<DisposeAsync>g__Awaited|9_0(RequestServicesFeature servicesFeature, ValueTask vt) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<FireOnCompleted>g__ProcessEvents|227_0(HttpProtocol protocol, Stack`1 events) ClientConnectionId:6a129afd-45aa-4b39-bf90-6a2afe92d63d Error Number:-2,State:0,Class:11

      Anderson Duarte Santos

      Anderson Duarte Santos

      student•
      hace 3 años

      Aquí dejo la solución que de momento puedo dar para mi problema, aclarando que quiero devolver el objeto que se creo en este caso.

      [HttpPost] public async Task<IResult> Post([FromServices]TareasContext dbContext, [FromBody] Categoria categoria) { categoria.CategoriaId = Guid.NewGuid(); await dbContext.AddAsync(categoria); await dbContext.SaveChangesAsync(); return Results.Created("Se ha creado con exito!", categoria); }
      Carlyle Komalram

      Carlyle Komalram

      student•
      hace 3 años

      Que tal Anderson! Espero que te encuentres bien.

      Te comento que hoy inicie un nuevo proyecto y me ha salido este error... de las 4hrs 44 min que llevo en el proyecto casi 2 he estado estancado y buscando solución. Al final lo he logrado; te comento y espero que te sirva. :3

      En el controlador

      [HttpPost] public async Task<IActionResult> Create([FromBody] User user) { // Console.WriteLine(user); var rta = await userservice.Create(user); return Ok(rta); }

      En el servicio

      public async Task<User> Create(User user) { context.Add(user); await context.SaveChangesAsync(); return user; }

      Mi solución fue poner de forma asíncrona también el controlador... Hay otras soluciones para salir del paso como utilizar MARS en el connectionstring pero creo que es más prudente hacerlo de esta forma. ¡Saludos!

    Facundo Oubel

    Facundo Oubel

    student•
    hace 3 años

    En que momento descargo e instalo el sql management?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Hola Facundo en este curso no se incluye esa parte. Por eso se encuentra dentro de los requisitos. Vamos a tener un curso de SQL Server para explicar esa parte. Es super facil igual descargas la version developer y con el wizard vas paso a paso o sino puede usar otro motor de base de datos que ya sepas como PostgreSQL

      Facundo Oubel

      Facundo Oubel

      student•
      hace 3 años

      Es lo mismo que usar Entity Framework Core?

    Aldo de J. Rodriguez Ronquillo

    Aldo de J. Rodriguez Ronquillo

    student•
    hace un año

    el POST me esta dado problemas

    {

    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",

    "title": "One or more validation errors occurred.",

    "status": 400,

    "errors": {

    "Tareas": [

    "The Tareas field is required."

    ]

    },

    "traceId": "00-cb7ffc548b7bb39e52b7ffbc5a0d0e10-94b37030a78049d4-00"

    }

    pide tareas como requerido al tratar de insertar una categorias estoy usando postgresSQL

      ANDRES HUMBERTO AGREDO BERMUDEZ

      ANDRES HUMBERTO AGREDO BERMUDEZ

      student•
      hace 7 meses

      Usa este modificador de acceso en las propiedades, tanto en la clase Tarea como Categoria

      c# - How to configure Swashbuckle to ignore property on model - Stack Overflow
    Emiliano Perez

    Emiliano Perez

    student•
    hace 2 años

    Nota: Diciembre 2023

    Por alguna razón, el código del profe no me funciono (hoy en día está .NET 7 y 8, pero para seguir el curso utilicé .NET 6). Me tira errores incoherentes pero después de hacer un par de pruebas cambiando el código, funcionó sacando el async del servicio, y utilizando el método context.SaveChanges()

    Andres Gonzalez

    Andres Gonzalez

    student•
    hace 3 años

    ¿Para crear la base de datos no hubiera sido mejor idea hacer la primer migración?

      Gaspar.meza

      Gaspar.meza

      student•
      hace 3 años

      Supongo que eso fue clase de fundamentos, pero, ya que lo sabes hacer seria bueno que por tu propia cuenta lo generes para que el conocimiento lo tengas fresco :)

    Jose Manuel Arguello Pico

    Jose Manuel Arguello Pico

    student•
    hace 3 meses

    Yo quería que la propiedad Resumen también quedara guardada en la base de datos, así que lo que hice fue: primero agregarla en el modelo Tarea como propiedad pública. Luego, en el OnModelCreating del contexto (TareasContext), quité la parte donde la estaba ignorando y añadí tarea.Property(p => p.Resumen); para que EF la mapeara como columna. Después generé una migración con:

    dotnet ef migrations add AddResumenToTarea

    dotnet ef database update

    Y listo. Ahora la columna Resumen existe en la tabla Tarea y ya puedo guardar y consultar ese dato desde la API.

    Leandro Andres Suarez Vece

    Leandro Andres Suarez Vece

    student•
    hace 3 años

    Tengo un problema, Cuando creo solo me deja crear una vez una nueva tarea, despues no me permite hacer ninguna otra accion ya sea borrar, editar o crear otro. pero en Postman me aparece como status: 200 ok dejo mi github para mas que lo puedan ver se encuentra en la rama EF https://github.com/leandroVece/Api-C-/tree/EF

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Acabo de ver el código y todo se ve super bien, te aconsejaria crear de nuevo la BD y probar de nuevo, revisas depronto permisos especiales que tengo el SQL server por que todo se ve muy bien.

      Leandro Andres Suarez Vece

      Leandro Andres Suarez Vece

      student•
      hace 3 años

      Ya borre y cree la DB, tambien reinici la pc, lo volvi a intentar, pero solo Get me permite acceder los otros no me deja.

      error.png

      estos son los mensajes que me salen, lo cual me parece raro porque en Postman en todas las acciones me da el OK :(

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads