iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

在現代Web應用中,RESTful API是最常見的後端接口設計方式。透過ASP.NET Core,我們可以快速且有效地構建RESTful API,並且將其部署到各種平台上。本篇將介紹如何使用ASP.NET Core創建並部署一個功能齊全的RESTful API。


1. 創建一個基本的RESTful API

在ASP.NET Core中,我們可以通過控制器來處理HTTP請求,實現RESTful API的各種操作(GET, POST, PUT, DELETE)。首先,讓我們建立一個簡單的API控制器。

[ApiController]
[Route("api/[controller]")]
public class StudentsController : ControllerBase
{
    private readonly MyDbContext _context;

    public StudentsController(MyDbContext context)
    {
        _context = context;
    }

    // GET: api/Students
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Student>>> GetStudents()
    {
        return await _context.Students.ToListAsync();
    }

    // GET: api/Students/5
    [HttpGet("{id}")]
    public async Task<ActionResult<Student>> GetStudent(int id)
    {
        var student = await _context.Students.FindAsync(id);

        if (student == null)
        {
            return NotFound();
        }

        return student;
    }

    // POST: api/Students
    [HttpPost]
    public async Task<ActionResult<Student>> PostStudent(Student student)
    {
        _context.Students.Add(student);
        await _context.SaveChangesAsync();

        return CreatedAtAction("GetStudent", new { id = student.Id }, student);
    }

    // PUT: api/Students/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutStudent(int id, Student student)
    {
        if (id != student.Id)
        {
            return BadRequest();
        }

        _context.Entry(student).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!StudentExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

    // DELETE: api/Students/5
    [HttpDelete("{id}")]
    public async Task<IActionResult> DeleteStudent(int id)
    {
        var student = await _context.Students.FindAsync(id);
        if (student == null)
        {
            return NotFound();
        }

        _context.Students.Remove(student);
        await _context.SaveChangesAsync();

        return NoContent();
    }

    private bool StudentExists(int id)
    {
        return _context.Students.Any(e => e.Id == id);
    }
}

此控制器實現了CRUD操作,包括查詢(GET)、創建(POST)、更新(PUT)、刪除(DELETE)等API端點。

  1. 部署RESTful API

創建API之後,下一步是將其部署到生產環境。ASP.NET Core支持多種部署方式,以下是幾個常見的部署平台:

  • IIS(Internet Information Services):適合在Windows伺服器上運行。
  • Azure App Service:雲端平台,無需管理伺服器。
  • Docker容器:將應用打包成容器,方便跨平台部署。

2.1 部署到IIS

首先,需要在IIS中安裝ASP.NET Core托管模組,然後將應用發布為一個文件夾,並將其部署到IIS中。

dotnet publish --configuration Release

發布後,將生成的文件夾拷貝到伺服器,並在IIS中設置網站的應用程序池和路徑。

2.2 部署到Azure

在Azure中,我們可以使用Visual Studio或Azure CLI進行部署。以下是使用Azure CLI的步驟:

登錄Azure帳號:

az login

創建一個App Service:

az webapp create --resource-group MyResourceGroup --plan MyPlan --name MyAppService --runtime "DOTNET|6.0"

部署應用到App Service:

az webapp deployment source config-local-git --name MyAppService --resource-group MyResourceGroup
  1. 小結

透過ASP.NET Core,我們可以快速構建RESTful API並將其部署到多種平台。從建立基本的CRUD操作到選擇適合的部署方式,這些步驟能幫助開發者有效管理後端API,提升應用的靈活性與可擴展性。


上一篇
Day_10 管理資料庫遷移
下一篇
Day_12 使用Swagger進行API文檔生成
系列文
ASP.NET Core的終極奧義:從零到無敵30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言