web API with ASP.NET Core
ตัวอย่างจะมีการออกแบบฐานข้อมูลและเขียนโปรแกรม API สำหรับการจัดการข้อมูลลูกค้า โดยใช้ .NET 8 Framework, C# (C-Sharp)
web API with ASP.NET Core
APIs เป็นเครื่องมือที่มีประสิทธิภาพสำหรับนักพัฒนาซอฟต์แวร์ ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างแอปพลิเคชั่นใหม่ๆ ได้โดยไม่ต้องเขียนโปรแกรมทั้งหมดเอง ช่วยให้เชื่อมต่อระบบต่างๆ เข้าด้วยกัน ช่วยให้เข้าถึงข้อมูลจากแหล่งต่างๆ ได้ง่ายขึ้น และช่วยเพิ่มประสิทธิภาพการทำงาน
RESTful APIs เป็นประเภทที่นิยมใช้มากที่สุด ทำงานบนพื้นฐานของ HTTP methods (GET, POST, PUT, DELETE) ตัวอย่างจะมีการออกแบบฐานข้อมูลและเขียนโปรแกรม API สำหรับการจัดการข้อมูลลูกค้า โดยใช้ .NET 8 Framework, C# (C-Sharp)
1. ออกแบบฐานข้อมูล สร้างตาราง "Customers" ที่มีคอลัมน์ต่อไปนี้
Id (int, Primary Key), FirstName (nvarchar), LastName (nvarchar), Email (nvarchar), Phone (nvarchar), Address (nvarchar)
CREATE TABLE Customers (
Id INT PRIMARY KEY,
FirstName NVARCHAR(255),
LastName NVARCHAR(255),
Email NVARCHAR(255),
Phone NVARCHAR(255),
Address NVARCHAR(255)
);
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
}
{
"ConnectionStrings": {
"DefaultConnection": "Server=YourServer\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
},
}
using Microsoft.EntityFrameworkCore;
// Add services to the container.
builder.Services.AddDbContext<AppDbContext>(
options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Threading.Tasks;
[ApiController]
[Route("api/[controller]")]
public class CustomerController : ControllerBase
{
private readonly AppDbContext _context;
public CustomerController(AppDbContext context)
{
_context = context;
}
.
.
.
.
.
private bool CustomerExists(int id)
{
return _context.Customers.Any(e => e.CustomerId == id);
}
}
[HttpGet]
public async Task<ActionResult<IEnumerable<Customer>>> GetCustomers()
{
return await _context.Customers.ToListAsync();
}
[HttpGet("{id}")]
public async Task<ActionResult<Customer>> GetCustomer(int id)
{
var customer = await _context.Customers.FindAsync(id);
if (customer == null)
{
return NotFound();
}
return customer;
}
[HttpPost]
public async Task<ActionResult<Customer>> AddCustomer([FromBody] Customer customer)
{
if (customer == null)
{
return BadRequest();
}
_context.Customers.Add(customer);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetCustomer), new { id = customer.CustomerId }, customer);
}
[HttpPut("{id}")]
public async Task<IActionResult> UpdateCustomer(int id,[FromBody] Customer customer)
{
if (id != customer.CustomerId || customer == null)
{
return BadRequest();
}
_context.Entry(customer).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
.if (!CustomerExists(id))
{
.return NotFound();
}
.else
{
.throw;
}
}
return NoContent();
}
[HttpDelete("{id}")]
public async Task DeleteCustomer(int id)
{
var customer = await _context.Customers.FindAsync(id);
if (customer == null)
{
return NotFound();
}
_context.Customers.Remove(customer);
await _context.SaveChangesAsync();
return NoContent();
}
สำหรับการจัดการใช้ฟังก์ชันต่าง ๆ ของ API เพื่อคืนค่าการตอบกลับที่เหมาะสมตามสถานการณ์ต่างๆ จาก ตัวอย่างฟังก์ชันที่ใช้ ได้แก่
- BadRequest() = "400 Bad Request"
- NotFound() = "404 Not Found"
- NoContent() = "204 No Content"
โดยการใช้ฟังก์ชันเหล่านี้จะช่วยให้ API สามารถสื่อสารสถานะของการดำเนินการได้เป็นอย่างดี ไม่ว่าจะเป็นการบันทึกข้อมูล, ค้นหาข้อมูล, หรือลบข้อมูล