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");
}
輸出:
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
提供客戶端直接下載