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:
- Dotnet 6.0
- VSCode
- 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
Tinggalkan Balasan