Bu blog yazısında, .NET Core 8 ve PostgreSQL kullanarak Visual Studio Code'da nasıl bir To-Do uygulaması geliştirebileceğinizi adım adım göstereceğim. API oluşturma, veritabanı bağlantısı ve CRUD işlemlerini detaylıca ele alacağız.
İçindekiler
- Proje Kurulumu
- PostgreSQL Kurulumu ve Veritabanı Yapılandırması
- .NET Core API Oluşturma
- Veritabanı Bağlantısı
- CRUD İşlemleri
- Uygulamanın Test Edilmesi
- Sonuç
1. Proje Kurulumu
İlk olarak, Visual Studio Code'u açın ve yeni bir klasör oluşturun. Terminali açarak bu klasöre gidin ve aşağıdaki komutla yeni bir .NET Core Web API projesi oluşturun:
dotnet new webapi -n TodoApp cd TodoApp
Projenizi oluşturduktan sonra, bağımlılıkları yüklemek için dotnet restore komutunu çalıştırın.
2. PostgreSQL Kurulumu ve Veritabanı Yapılandırması
PostgreSQL'i kurmak için resmi PostgreSQL web sitesini ziyaret edin ve işletim sisteminize uygun sürümü indirin. Kurulum sırasında bir kullanıcı adı ve parola belirleyin (örneğin, postgres kullanıcısı ve password parolası).
Kurulumdan sonra, PostgreSQL komut satırını (psql) açın ve yeni bir veritabanı oluşturun:
CREATE DATABASE tododb;
3. .NET Core API Oluşturma
Projenizde Controllers klasörünün altına TodoController.cs adlı yeni bir dosya oluşturun. Bu dosya, API endpoint'lerini içerecektir. Aşağıdaki kodu ekleyin:
using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TodoApp.Controllers { [Route("api/[controller]")] [ApiController] public class TodoController : ControllerBase { // CRUD işlemlerini burada gerçekleştireceğiz } }
4. Veritabanı Bağlantısı
PostgreSQL ile bağlantı kurmak için Npgsql.EntityFrameworkCore.PostgreSQL paketini yükleyin:
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
appsettings.json dosyasını açın ve veritabanı bağlantı dizgisini ekleyin:
{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Database=tododb;Username=postgres;Password=password" } }
Startup.cs dosyasını açın ve veritabanı bağlamını yapılandırın:
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<TodoContext>(options => options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"))); services.AddControllers(); }
Models klasöründe TodoItem.cs adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin:
using System.ComponentModel.DataAnnotations; namespace TodoApp.Models { public class TodoItem { [Key] public long Id { get; set; } public string Name { get; set; } public bool IsComplete { get; set; } } }
Aynı klasörde TodoContext.cs dosyasını oluşturun:
using Microsoft.EntityFrameworkCore; namespace TodoApp.Models { public class TodoContext : DbContext { public TodoContext(DbContextOptions<TodoContext> options) : base(options) { } public DbSet<TodoItem> TodoItems { get; set; } } }
5. CRUD İşlemleri
TodoController.cs dosyasına CRUD işlemlerini ekleyin:
[HttpGet] public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems() { return await _context.TodoItems.ToListAsync(); } [HttpGet("{id}")] public async Task<ActionResult<TodoItem>> GetTodoItem(long id) { var todoItem = await _context.TodoItems.FindAsync(id); if (todoItem == null) { return NotFound(); } return todoItem; } [HttpPost] public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } [HttpPut("{id}")] public async Task<IActionResult> PutTodoItem(long id, TodoItem todoItem) { if (id != todoItem.Id) { return BadRequest(); } _context.Entry(todoItem).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TodoItemExists(id)) { return NotFound(); } else { throw; } } return NoContent(); } [HttpDelete("{id}")] public async Task<IActionResult> DeleteTodoItem(long id) { var todoItem = await _context.TodoItems.FindAsync(id); if (todoItem == null) { return NotFound(); } _context.TodoItems.Remove(todoItem); await _context.SaveChangesAsync(); return NoContent(); } private bool TodoItemExists(long id) { return _context.TodoItems.Any(e => e.Id == id); }
6. Uygulamanın Test Edilmesi
Uygulamayı test etmek için terminalde dotnet run komutunu çalıştırın. Tarayıcınızda https://localhost:5001/api/todo adresine giderek API endpoint'lerini test edebilirsiniz. Ayrıca Postman gibi bir API istemcisi kullanarak CRUD işlemlerini deneyebilirsiniz.
7. Sonuç
Bu blog yazısında, .NET Core 8 ve PostgreSQL kullanarak basit bir To-Do uygulamasının nasıl geliştirileceğini öğrendiniz. Bu temel bilgilerle daha karmaşık projeler oluşturabilir ve .NET Core ile PostgreSQL'in gücünü keşfedebilirsiniz.