Web Api返回值
阿新 • • 發佈:2019-01-31
namespace WebApi.Controllers { public class HomeController : ApiController { [HttpGet] public int GetByAge(string name) { if (name == "admin") return 25; if (name == "lily") return 18; return 0; //Action 的返回值可以是普通型別,這是最常用的。 } [HttpGet] public void ExecuteFun() { //Action 的返回值可以為void,這樣客戶端會得到204 的狀態碼,儘量別這樣幹 } public IHttpActionResult Add(int i) { if (i == 1) { return Ok(); //如果返回Ok(),就表示不向客戶端返回任何資訊,只告訴客戶端請求成功。 } if (i == 2) { return Json(new { code = 0, data = "abc" }); //返回一個json資料 } if (i == 3) { List<string> list = new List<string>() { "tom", "lily", "luc" }; //返回一個泛型json資料 return Json<List<string>>(list); } if (i == 4) { return Content(HttpStatusCode.OK, new { data = "abc" }); //向客戶端返回http狀態碼和值(值可以是物件,也可以是其他型別) } if (i == 5) { return Content<string>(HttpStatusCode.OK, "abc");//向客戶端返回http狀態碼和指定型別的值 } if (i == 6) { return StatusCode(HttpStatusCode.NotFound); //返回一個狀態碼 HttpStatusCode是一個列舉 } if (i == 7) { return BadRequest("錯誤"); //向客戶端返回400的http錯誤。 } return NotFound();//NotFound()方法會返回一個404的錯誤到客戶端。 } //向客戶端返回一個http響應的訊息物件(比較精細化的控制返回訊息) public HttpResponseMessage Index() { HttpResponseMessage msg = new HttpResponseMessage(); msg.StatusCode = System.Net.HttpStatusCode.OK; //設定http狀態碼 msg.Content = new StringContent("內容哈哈哈哈"); msg.Headers.Add("UserName", "Tom"); msg.Headers.Age = TimeSpan.FromDays(2); return msg; } public HttpResponseMessage Export()//匯出的Excel檔案輸出到客戶端瀏覽器 { //取資料 var lstRes = OrderBLL.Export(); //向Excel裡面填充資料 HSSFWorkbook workbook = new HSSFWorkbook(); CreateAndFillSheet(workbook, lstRes); //儲存到服務 var fileName = "Excel" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; var strPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Data\" + fileName); using (FileStream fs = new FileStream(strPath, FileMode.Create)) { workbook.Write(fs); using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); } } //輸出到瀏覽器 try { //將檔案流儲存在StreamContent物件裡面,然後輸出到瀏覽器。在瀏覽器端即可將Excel輸出。 var stream = new FileStream(strPath, FileMode.Open); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; return response; } catch { return new HttpResponseMessage(HttpStatusCode.NoContent); } } } }