Tutorial CRUD Dasar C# ASP.NET Core Web API

Di era digital saat ini, pengembangan aplikasi web yang efisien dan dinamis menjadi kebutuhan yang semakin mendesak. Salah satu teknologi yang sering digunakan untuk memenuhi kebutuhan tersebut adalah ASP.NET Core Web API, sebuah framework yang dikembangkan oleh Microsoft. ASP.NET Web API memungkinkan pengembang untuk membangun layanan HTTP yang dapat diakses oleh berbagai klien, termasuk browser dan perangkat mobile.

Dalam artikel ini, kita akan menjelajahi dasar-dasar operasi CRUD (Create, Read, Update, & Delete) menggunakan C# ASP.NET Core Web API. Melalui tutorial ini, Anda akan mempelajari cara membuat API yang tangguh dan terstruktur dengan baik, sehingga dapat meningkatkan produktivitas dan fleksibilitas dalam pengembangan aplikasi web Anda.

Tutorial ini menggunakan .NET 8.0 LTS dan database PostgreSQL. Lebih lanjut, Entity Framework adalah ORM yang akan kita praktikkan di proyek ini.

1. Unduh dan Install Visual Studio Community

Langkah pertama dalam membangun aplikasi CRUD dengan C# ASP.NET Core Web API adalah melakukan instalasi Visual Studio, sebuah lingkungan pengembangan terintegrasi (IDE) yang kuat dan serbaguna dari Microsoft. Teman-teman dapat mengunduh Visual Studio Community pada laman resmi Visual Studio.

Setelah file installer diunduh, jalankan installer tersebut dan ikuti petunjuk yang diberikan untuk menyelesaikan proses instalasi. Pastikan untuk memilih workload “ASP.NET and web development” agar semua komponen yang diperlukan untuk pengembangan Web API terpasang. Dengan Visual Studio yang telah ter-install, Anda siap melanjutkan ke langkah berikutnya dalam membangun aplikasi CRUD Anda.

2. Membuat Project Baru ASP.NET Core Web API

Langkah berikutnya adalah membuka IDE Visual Studio Anda, kemudian pilih “Create A New Project”. Di halaman berikutnya, cari “web api”, kemudian pilih “ASP.NET Core Web API” dengan logo C# hijau di sebelah kirinya.

Setelah klik tombol “Next”, selanjutnya kita ketikkan nama proyek “BasicCRUD” dan pilih folder tempat di mana Anda meletakkan source code proyek ini. Klik “Next” dan kita akan berada di langkah terakhir. Di halaman terakhir ini tidak perlu ubah apa pun, langsung klik tombol “Create” saja.

Proyek baru “BasicCRUD” kita sudah berhasil dibuat. Sekarang kita coba running dengan klik tombol Play berwarna hijau di bagian tengah atas. Sudah ada endpoint bawaan dari Visual Studio, yaitu Weather Forecast. Jika berhasil dijalankan, web browser Anda akan menampilkan Swagger seperti ini.

3. Instalasi NuGet Package yang Dibutuhkan

Pada lingkungan pengembangan .NET Core, ada Package Manager yang dinamakan NuGet Package Manager. Di sini kita bisa mengelola Library Package yang dibutuhkan dalam proyek kita. Untuk mengakses NuGet Package Manager ini, silakan teman-teman akses menu Tools → NuGet Package Manager → Manage NuGet Packages for Solution.

Berikut ini adalah NuGet Package yang kita butuhkan:

  1. Npgsql.EntityFrameworkCore.PostgreSQL: Package ini merupakan ORM Entity Framework untuk database PostgreSQL.
  2. Microsoft.EntityFrameworkCore.Tools: Package ini digunakan agar proyek kita dapat mengeksekusi perintah DB Migration.
  3. EFCore.NamingConventions: Package ini digunakan agar tabel yang dibuat dari Entity Framework dikonversi ke snake_case, karena secara default Entity Framework menggunakan CamelCase.

Silakan cari dan install package-package yang dibutuhkan di atas.

4. Menambahkan Connection String di appsettings.json

Sebelum membuat Connection String, silakan teman-teman buat database “net_basic_crud” di PostgreSQL. Aktifkan juga modul uuid-ossp di Postgres karena kita akan menggunakan fungsi untuk membuat Guid. Cara mengaktifkannya adalah dengan mengetikkan query berikut.

CREATE EXTENSION "uuid-ossp";

Kemudian buka file appsettings.json dan tambahkan connection string seperti berikut di bawah parameter “AllowedHosts”:

"ConnectionStrings": {
  "Default": "Host=localhost; Database=net_basic_crud; Username=pg_username; Password=pg_password"
}

Pastikan username dan password disesuaikan dengan credential database Postgres Anda.

5. Membuat Kelas Model

Sekarang, kita coba membuat kelas model “Contact”. Buat direktori “Models” di root, kemudian buat kelas baru Contact.cs yang berisikan kode seperti berikut:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace BasicCRUD.Models
{
  [Table("contact", Schema = "master")]
  public class Contact
  {
    public Guid Id { get; set; }
    [Required]
    public string Name { get; set; } = string.Empty;
    [Required]
    public string PhoneNumber { get; set; } = string.Empty;
    public string? Email { get; set; }
  }
}

6. Membuat Data Context

Berikutnya mari kita buat kelas Data Context, letakkan di folder Models juga.

using Microsoft.EntityFrameworkCore;

namespace BasicCRUD.Models
{
  public class DataContext : DbContext
  {
    public DbSet<Contact> Contacts { get; set; }
    
    public DataContext(DbContextOptions<DataContext> options) : base(options) { }
  }
}

7. Koneksikan dengan PostgreSQL di Program.cs

Buka file Program.cs di folder root, kemudian tambahkan script berikut setelah komentar “Add services to the container”.

// NpgSql connection.
string? connectionString = builder.Configuration.GetConnectionString("Default");
builder.Services.AddDbContext<DataContext>(options => options.UseNpgsql(connectionString).UseSnakeCaseNamingConvention());

8. Migrasi Tabel Contact

Buka Package Manager Console melalui menu: Tools → NuGet Package Manager → Package Manager Console dan ketikkan perintah berikut di command line.

Add-Migration CreateContact

Jika berhasil, maka akan terbentuk file migration di folder Migrations. Buka file migration tersebut dan ubah definisi field “id” dengan menambahkan “defaultValueSql” seperti ini.

id = table.Column<Guid>(type: "uuid", nullable: false, defaultValueSql: "uuid_generate_v4()"),

Tambahan kode tersebut digunakan agar field “id” dapat secara otomatis membuat nilai Guid.

Sekarang, aplikasikan script migration ke database dengan memasukkan perintah di console.

Update-Database

Cek database untuk memastikan tabel “contact” sudah terbuat.

9. Membuat Repo Contact

Selanjutnya kita akan membuat script untuk CRUD ke tabel contact. Buat folder “Repos” di root proyek, dan tambahkan kelas “ContactRepo”. Isinya adalah sebagai berikut.

using BasicCRUD.Models;

namespace BasicCRUD.Repos
{
  public class ContactRepo
  {
    private readonly DataContext _db;
    
    public ContactRepo(DataContext db)
    {
      _db = db;
    }
    
    public IEnumerable<Contact> Get()
    {
      return _db.Contacts;
    }

    public void Create(Contact contact)
    {
      _db.Contacts.Add(contact);
      _db.SaveChanges();
    }

    public void Update(Contact contact)
    {
      _db.Contacts.Update(contact);
      _db.SaveChanges();
    }

    public void Delete(Guid id)
    {
      Contact? contact = _db.Contacts.Find(id);
      if (contact != null)
      {
        _db.Contacts.Remove(contact);
        _db.SaveChanges();
      }
    }
  }
}

10. Membuat Controller Contact

Langkah terakhir adalah membuat controller dari Contact. Langsung saja, script-nya adalah sebagai berikut.

using BasicCRUD.Models;
using BasicCRUD.Repos;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Numerics;

namespace BasicCRUD.Controllers
{
  [ApiController]
  [Route("[controller]")]
  public class ContactController : ControllerBase
  {
    private readonly DataContext _db;
    private readonly ContactRepo _repo;

    public ContactController(DataContext db)
    {
      _db = db;
      _repo = new ContactRepo(db);
    }

    [HttpPost]
    public IActionResult Create(Contact contact)
    {
      _repo.Create(contact);
      return Ok(contact);
    }

    [HttpGet]
    public IActionResult Get()
    {
      IEnumerable<Contact> contacts = _repo.Get();
      return Ok(contacts);
    }

    [HttpPut]
    public IActionResult Update(Contact contact)
    {
      _repo.Update(contact);
      return Ok(contact);
    }

    [HttpDelete]
    public IActionResult Delete(Guid id)
    {
      _repo.Delete(id);
      return Ok("Data berhasil dihapus.");
    }
  }
}

Sekarang, coba jalankan dan hit API-nya satu-persatu. Pastikan semua end-point berfungsi sebagaimana yag diharapkan.


Dengan menyelesaikan tutorial ini, Anda telah memperoleh pemahaman yang lebih dalam tentang cara membangun dan mengelola operasi CRUD menggunakan C# ASP.NET Core Web API. Dari instalasi Visual Studio hingga implementasi setiap operasi CRUD, Anda kini memiliki fondasi yang kuat untuk mengembangkan aplikasi web yang dinamis dan efisien.

Pengetahuan ini tidak hanya akan meningkatkan produktivitas Anda sebagai pengembang, tetapi juga membuka peluang untuk menciptakan solusi yang lebih kompleks dan canggih di masa depan. Teruslah berlatih dan eksplorasi fitur-fitur lanjutan ASP.NET Core Web API untuk memperluas kemampuan dan keterampilan Anda dalam pengembangan aplikasi web.

Semoga tutorial ini bermanfaat dan menjadi langkah awal dalam perjalanan Anda sebagai pengembang aplikasi yang handal.