Web API Helper

Web API Helper 是針對 ASP.NET Web API Framework 設計的專用輔助函式庫,它可以讓你更方便快速地建立 Web API

Resources

Configuration

使用 Web API Helper 之前,請確認您的 Web API 專案是否需要使用 SignalR 的任何功能,如果不需要使用請加入以下設定:

Web.config

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>

由於 ZapLib v1.16 開始支援 SignalR 的功能,才會有這個設定

Super simple to use

以下示範在 .NET Web API 的 Controller 中使用 ExtApiHelper,它可以簡化建立 HttpResponseMessage 物件的流程,並自動將資料轉換為 JSON 格式回傳

回傳格式:

  • Content-Type:application/json; charset=utf-8
  • Status-Code:200 OK

示範:

public class ValuesController : ApiController
{
    // GET api/values/100
    public HttpResponseMessage Get(int id)
    {
        ExtApiHelper api = new ExtApiHelper(this); // 初始化 helper 物件
        return api.getResponse(new { id });        // 自動建立 HttpResponseMessage 並轉換為 JSON 格式回傳
    }
}

輸出:

{
    id: 100
}

Custom HttpResponseMessage

以下示範使用 ExtApiHelper 客製化 HttpResponseMessage 的內容

客製回傳格式:

  • Content-Type:application/json; charset=utf-8
  • Status-Code:403 Forbidden
  • Cookie:MyCookie=123456; path=/; HttpOnly; Expires=Tue, 01 Jan 2019 00:00:00 GMT;
  • Header:MyHeader=123456

示範:

public HttpResponseMessage Get(int id)
{
    ExtApiHelper api = new ExtApiHelper(this);
    api.setHeader("MyHeader", "123456"); // set Header
    api.addCookie("MyCookie", "123456", Convert.ToDateTime("2019-01-01")); // add Cookie
    return api.getResponse(new { id },HttpStatusCode.Forbidden); // 403 Forbidden
}

Text Response

以下示範輸出純文字回應訊息

回傳格式:

  • Content-Type:text/html; charset=utf-8
  • Status-Code:200 OK

示範:

public HttpResponseMessage Get()
{
    ExtApiHelper api = new ExtApiHelper(this);
    return api.getTextResponse("Test 123");
}

輸出:

Test 123

Redirect Response

以下示範輸出重新導向的訊息

回傳格式:

  • Content-Type:text/html; charset=utf-8
  • Status-Code:200 OK

示範:

public HttpResponseMessage Get()
{
    ExtApiHelper api = new ExtApiHelper(this);
        // api.getRedirectResponse(網址,延遲秒數,顯示文字)
    return api.getRedirectResponse("http://www.google.com", 5, "Redirect to Google");
}

輸出:

<meta http-equiv="refresh" content="5; URL = 'http://www.google.com'" />
<body>Redirect to Google</body>

Text File Response

以下示範將字串做為檔案內容,並提供客戶端下載的回應訊息

回傳格式:

  • Content-Type:application/octet-stream; charset=utf-8
  • Status-Code:200 OK
  • ContentDisposition:attachment

示範:

public HttpResponseMessage Get()
{
    ExtApiHelper api = new ExtApiHelper(this);
    string data = "{ \"name\":\"Wang\" , \"age\":16 }";
    return api.getAttachmentResponse(data, "data.json");
}

輸出:
Download File

Stream Response

以下示範將實體檔案或 byte[] 資料以串流方式,提供客戶端下載

回傳格式:

  • Content-Type:自訂MIME-Type; charset=utf-8
  • Status-Code:200 OK

示範:

// 將實體檔案以串流方式回傳
public HttpResponseMessage test_file()
{
    ExtApiHelper api = new ExtApiHelper(this);
    // api.getStreamResponse(檔案路徑, 重新命名, MIME Type, 模式)
    return api.getStreamResponse(@"D:\FSX_Storage\play.png", "play.png", "image/png", "inline");
}

// 將 byte 資料以串流方式回傳
public HttpResponseMessage test_file2()
{
    ExtApiHelper api = new ExtApiHelper(this);
    string str = "123456";
    byte[] file = System.Text.Encoding.Default.GetBytes(str);
    // api.getStreamResponse(byte 資料, 重新命名, MIME Type, 模式)
    return api.getStreamResponse(file, "data.txt", "text/plain", "attachment");
}

輸出:

下載檔案

注意:如果將模式設定為 inline 表示希望檔案直接在瀏覽器上預覽,請確認檔案類型是否為文字,圖片,影片等多媒體格式,否則還是會使用 attachment 提供客戶端直接下載

More

results matching ""

    No results matching ""