1. Pengantar RESTful API dan ASP.NET Core
RESTful API adalah arsitektur yang memungkinkan aplikasi berkomunikasi melalui protokol HTTP dengan menggunakan metode standar seperti GET, POST, PUT, dan DELETE. ASP.NET Core adalah framework open-source dari Microsoft yang powerful untuk membangun aplikasi web dan API yang scalable dan cross-platform.
Dalam ebook ini, Anda akan belajar bagaimana membangun aplikasi cinematic yang aman dan efisien menggunakan RESTful API dengan ASP.NET Core.
2. Persiapan Lingkungan dan Tools
Sebelum mulai coding, pastikan Anda sudah menyiapkan beberapa tools berikut:
-
Visual Studio 2022 atau Visual Studio Code
-
.NET 7 SDK terbaru (unduh dari
dotnet.microsoft.com
)
-
Postman untuk testing API
-
SQL Server Express atau database lain yang kompatibel
Setelah tools terpasang, buat folder proyek baru dan buka di editor pilihan Anda.
3. Struktur Proyek Cinematic App
Struktur proyek yang baik memudahkan pengembangan dan pemeliharaan. Berikut struktur dasar yang akan kita gunakan:
-
Controllers/
- Tempat API controller
-
Models/
- Definisi model data
-
Data/
- Context database dan migrasi
-
Services/
- Logika bisnis dan layanan
-
Properties/
- Konfigurasi proyek
4. Membuat RESTful API dengan ASP.NET Core
Mari kita buat API sederhana untuk mengelola data film. Pertama, buat model Film:
namespace CinematicApp.Models
{
public class Film
{
public int Id { get; set; }
public string Judul { get; set; }
public string Sutradara { get; set; }
public int TahunRilis { get; set; }
public string Genre { get; set; }
}
}
Selanjutnya, buat controller FilmController untuk endpoint API:
using Microsoft.AspNetCore.Mvc;
using CinematicApp.Models;
using System.Collections.Generic;
using System.Linq;
namespace CinematicApp.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class FilmController : ControllerBase
{
private static List<Film> films = new List<Film>()
{
new Film { Id = 1, Judul = "Inception", Sutradara = "Christopher Nolan", TahunRilis = 2010, Genre = "Sci-Fi" },
new Film { Id = 2, Judul = "Parasite", Sutradara = "Bong Joon-ho", TahunRilis = 2019, Genre = "Thriller" }
};
[HttpGet]
public ActionResult<IEnumerable<Film>> GetAll()
{
return Ok(films);
}
[HttpGet("{id}")]
public ActionResult<Film> GetById(int id)
{
var film = films.FirstOrDefault(f => f.Id == id);
if (film == null) return NotFound();
return Ok(film);
}
[HttpPost]
public ActionResult<Film> Create(Film film)
{
film.Id = films.Max(f => f.Id) + 1;
films.Add(film);
return CreatedAtAction(nameof(GetById), new { id = film.Id }, film);
}
[HttpPut("{id}")]
public IActionResult Update(int id, Film film)
{
var existing = films.FirstOrDefault(f => f.Id == id);
if (existing == null) return NotFound();
existing.Judul = film.Judul;
existing.Sutradara = film.Sutradara;
existing.TahunRilis = film.TahunRilis;
existing.Genre = film.Genre;
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
var film = films.FirstOrDefault(f => f.Id == id);
if (film == null) return NotFound();
films.Remove(film);
return NoContent();
}
}
}
API ini menyediakan endpoint untuk operasi CRUD pada data film.
5. Implementasi Autentikasi dan Otorisasi
Untuk mengamankan API, kita akan menggunakan JWT (JSON Web Token). Berikut langkah-langkah singkatnya:
-
Tambahkan paket NuGet
Microsoft.AspNetCore.Authentication.JwtBearer
.
-
Konfigurasi layanan JWT di
Program.cs
atau
Startup.cs
.
-
Buat endpoint login yang mengeluarkan token JWT setelah validasi user.
-
Tambahkan atribut
[Authorize]
pada controller atau action yang ingin diamankan.
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "yourdomain.com",
ValidAudience = "yourdomain.com",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key_here"))
};
});
Dengan konfigurasi ini, API Anda akan memverifikasi token JWT pada setiap request yang membutuhkan autentikasi.
6. Integrasi Database dengan Entity Framework Core
Untuk menyimpan data film secara permanen, gunakan Entity Framework Core dengan SQL Server. Berikut langkah-langkahnya:
-
Tambahkan paket NuGet
Microsoft.EntityFrameworkCore.SqlServer
dan
Microsoft.EntityFrameworkCore.Tools
.
-
Buat kelas
AppDbContext
di folder
Data/
:
using Microsoft.EntityFrameworkCore;
using CinematicApp.Models;
namespace CinematicApp.Data
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
public DbSet<Film> Films { get; set; }
}
}
3. Konfigurasikan koneksi database di
appsettings.json
:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=CinematicDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
4. Tambahkan konfigurasi DbContext di
Program.cs
:
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
5. Jalankan migrasi database:
dotnet ef migrations add InitialCreate
dotnet ef database update
7. Pengujian API dan Debugging
Gunakan Postman atau tools serupa untuk menguji endpoint API Anda. Berikut contoh pengujian GET semua film:
Debugging dapat dilakukan dengan breakpoint di Visual Studio atau menggunakan logging ASP.NET Core untuk melacak error.
8. Deploy dan Keamanan API
Setelah aplikasi siap, Anda bisa deploy ke cloud seperti Azure, AWS, atau server VPS. Pastikan:
-
Gunakan HTTPS untuk komunikasi aman
-
Konfigurasi firewall dan CORS dengan benar
-
Perbarui secret key JWT secara berkala
-
Monitor log dan performa API
9. Sumber Belajar dan Source Code
Berikut beberapa sumber belajar dan repository source code yang bisa Anda gunakan untuk memperdalam:
Anda dapat mengunduh source code lengkap ebook ini di:
Download Source Code di GitHub