🔥 基礎入門篇

1. 什麼是ASP.NET WebAPI?

答案:ASP.NET WebAPI是用於構建RESTful HTTP服務的框架,支持多種客户端如瀏覽器、移動設備等。

2. 創建簡單WebAPI控制器

public class MyController : ApiController
{
    public string Get()
    {
        return "Hello, WebAPI!";
    }
}

3. 定義GET方法

[HttpGet]
public string Get()
{
    return "Hello, WebAPI!";
}

4. 定義POST方法

[HttpPost]
public void Post([FromBody] string value)
{
    // 處理POST請求數據
}

5. 返回JSON數據

public IHttpActionResult Get()
{
    var data = new { Name = "John", Age = 30 };
    return Json(data);
}

⚡ 進階實戰篇

1. 自定義路由配置

[Route("api/custom/route")]
public string Get()
{
    return "自定義路由示例";
}

2. 全局異常處理

public class CustomExceptionFilter : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
        {
            Content = new StringContent("系統發生異常,請稍後重試")
        };
    }
}

3. 依賴注入實戰

// 使用Unity容器
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
GlobalConfiguration.Configuration.DependencyResolver = new UnityResolver(container);

4. 模型驗證機制

public class UserModel
{
    [Required(ErrorMessage = "姓名不能為空")]
    public string Name { get; set; }
}

[HttpPost]
public IHttpActionResult CreateUser(UserModel model)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    return Ok("用户創建成功");
}

5. 身份驗證保護

[Authorize]
public IHttpActionResult GetSecretData()
{
    return Ok("這是受保護的數據");
}

🚀 高級特性篇

1. 自定義消息處理器

public class LoggingMessageHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        // 請求前記錄日誌
        var response = await base.SendAsync(request, cancellationToken);
        // 響應後記錄日誌
        return response;
    }
}

2. 自定義授權邏輯

public class RoleBasedAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        // 基於角色的自定義授權邏輯
        return actionContext.RequestContext.Principal.IsInRole("Admin");
    }
}

[RoleBasedAuthorize]
public IHttpActionResult AdminOnly()
{
    return Ok("管理員專屬內容");
}

3. 文件上傳功能

[HttpPost]
public async Task<IHttpActionResult> UploadFile()
{
    var provider = new MultipartFormDataStreamProvider(Path.GetTempPath());
    await Request.Content.ReadAsMultipartAsync(provider);
    
    foreach (var file in provider.FileData)
    {
        // 處理上傳的文件
    }
    return Ok("文件上傳成功");
}

4. 跨域請求配置

[EnableCors(origins: "https://example.com", headers: "*", methods: "*")]
public class CrossOriginController : ApiController
{
    public string Get()
    {
        return "支持跨域訪問";
    }
}

5. API版本控制策略

// V1版本
[RoutePrefix("api/v1/products")]
public class ProductsV1Controller : ApiController
{
    [Route("")]
    public string Get() => "V1版本API";
}

// V2版本  
[RoutePrefix("api/v2/products")]
public class ProductsV2Controller : ApiController
{
    [Route("")]
    public string Get() => "V2版本API - 新增功能";
}

💡 面試準備建議

掌握要點

  • ✅ 理解RESTful架構原則
  • ✅ 熟悉HTTP協議和狀態碼
  • ✅ 掌握依賴注入和中間件
  • ✅ 瞭解安全機制和性能優化

實戰建議

  • 親手實現每個代碼示例
  • 理解各特性的應用場景
  • 準備項目經驗分享

通過系統掌握這些知識點,你將在ASP.NET WebAPI的技術面試中展現出紮實的技術功底和實戰能力!

🔥 附錄

.NET全棧經典面試題庫

內容涵蓋以下內容

  • ASP.NET MVC應用場景面試題
  • WinForm應用場景面試題
  • jQuery應用場景面試題
  • 3、SQLServer面試題
  • ASP.NET應用場景面試題
  • C#基礎面試題及其答案
  • ASP.NET WebAPI應用場景面試題
  • MySQL面試題
  • SQL Server應用場景面試題

下載鏈接1:

.NET全棧經典面試題庫(夸克網盤)

下載鏈接2:

.NET全棧經典面試題庫(迅雷雲盤)