iT邦幫忙

DAY 28
5

Kuick Hands on Labs系列 第 28

Kuick Hands on Labs -- 28. API(2)

提供給其他系統使用的 API,「always try catch」是基本的設計規範,無論處理結果如何,都是回傳 HTTP status code 200 OK,並且以 success 布林屬性回傳表示成功或失敗,以及 message 字串提供額外訊息。
API 以 order 為例,傳入訂單代碼 OrderID,回傳訂單與商品明細。

程式摘要:

dynamic json = new JObject();
 
// always try catch
try {
	if(null == Order) {
		throw new KException("查不到這筆訂單資料");
	}
 
	// Order
	json.OrderID = Order.OrderID;
	json.CustomerID = Order.CustomerID;
	json.CreateDate = Order.CreateDate;

	// Order Products
	JArray orderProducts = new JArray();
	foreach(var one in Order.OrderProducts) {
		dynamic orderProduct = new JObject();
		orderProduct.OrderProductID = one.OrderProductID;     // 訂單商品代碼
		orderProduct.ProductID      = one.ProductID;          // 商品代碼
		orderProduct.Quantity       = one.Quantity;           // 數量
		orderProduct.UnitPrice      = one.UnitPrice;          // 單價
		orderProduct.Unit           = one.Product.Unit;       // 單位
		orderProduct.ProductName    = one.Product.Name;       // 商品名稱
		orderProduct.BrandName      = one.Product.Brand.Name; // 品牌名稱
		orderProducts.Add(orderProduct);
	}
	json.OrderProducts = orderProducts;
 
	// 回傳 JSON 格式資料
	json.success = true;
	json.message = "成功";
} catch(KException kx) {
	Logger.Error("/api/order.ashx", kx);
	json = new JObject();
	json.success = false;
	json.message = kx.Message; // 拋出異常訊息
} catch(Exception ex) {
	Logger.Error("/api/order.ashx", ex);
	json = new JObject();
	json.success = false;
	json.message = "系統異常,請稍後再試";
}
		
Response.Write(JsonConvert.SerializeObject(json));

API回傳JSON資料:


上一篇
Kuick Hands on Labs -- 27. API(1)
下一篇
Kuick Hands on Labs -- 29. Inline Editing
系列文
Kuick Hands on Labs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

我要留言

立即登入留言