REST Web API .NET + Postgres

Hi gengz, artikel kali ini kita akan bahas REST API .NET, langsung aja kita gaskan

Di artikel kali ini, saya berasumsi bahwa teman teman sudah menginstall hal hal dibawah ini:

  1. Dotnet 6.0
  2. VSCode
  3. Postgres

Mari kita buat dulu projectnya yuk

dotnet new webapi -o TodoApi
cd TodoApi
code .

Lakukan perintah dibawah untuk Trust HTTPS development certificate

dotnet dev-certs https --trust

Buat folder Models

Buat file baru di dalam folder Models bernama TodoItem.cs

Copy paste code berikut di dalam file tersebut

namespace TodoApi.Models
{
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
}

Buat file baru di dalam folder Models bernama TodoContext.cs

Copy paste code berikut di dalam file tersebut

using Microsoft.EntityFrameworkCore;
using System.Diagnostics.CodeAnalysis;

namespace TodoApi.Models
{
    public class TodoContext : DbContext
    {
        protected readonly IConfiguration Configuration;

        public TodoContext(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
        {
            // connect to postgres with connection string from app settings
            options.UseNpgsql(Configuration.GetConnectionString("WebApiDatabase"));
        }

        public DbSet<TodoItem> TodoItems { get; set; } = null!;
    }
}

Rubah file Program.cs dengan code berikut

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
builder.Services.AddDbContext<TodoContext>(opt =>
    opt.UseNpgsql("TodoList"));
builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new() { Title = "TodoApi", Version = "v1" });
});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (builder.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "TodoApi v1"));
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

Install semua package yang kita butuhkan

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 6.0.7
dotnet tool install -g dotnet-aspnet-codegenerator

Update file appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "WebApiDatabase": "Server=127.0.0.1;Port=5432;Database=todoapi;User Id=postgres;Password=mysecretpassword;"
  }
}

Catatan : Asumsi saya, postgres ada di localhost/127.0.0.1 dan anda sudah memiliki database bernama todoapi, silahkan sesuaikan dengan environment masing masing

Lakukan migrasi database

dotnet ef migrations add InitialCreate
dotnet ef database update

Anda bisa check di postgres database bila ada perubahan

Sekarang kita akan melakukan scaffold terhadap controller menggunakan command berikut

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers

Jika berhasil anda akan melihat file baru di folder Controller

Rubah file port https sesuai dengan yang anda inginkan, saya sendiri merubahnya menjadi 7099

Yuk kita jalankan

dotnet run

Silahkan akses url berikut untuk mengakses swagger

https://localhost:7099/swagger/index.html

Tampak jelas bahwa url API kita ada di /api/TodoItems, anda bisa mengaksesnya di url berikut

https://localhost:7099/api/todoitems

Testing akan saya serahkan ke anda, karena dengan adanya swagger, kita langsung bisa coba disana gengz, ntaps kan. Semoga bermanfaat

Berikut adalah hasil codenya, untuk referensi

https://github.com/ludesdeveloper/dotnet-rest-webapi-postgres

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: