- สร้างโปรเจ็กส์ WepApi
- รันโปรเจ็กส์
- ลองเรียกแบบ GET
- กำหนดให้คืนค่าแบบ JSON ไม่คืนค่าแบบ XML
1.สร้างโปรเจ็กส์ WepApi
เลือกเมนู
File > New > Project …
เลือก
Visual C# > Web > ASP.NET Web Application (.NET Framework)
ตั้งชื่อโปรเจ็กส์ WebApi
เลือก Web API
2.รันโปรเจ็กส์
กด F5
http://localhost:57067/
คลิกที่เมนู API จะแสดงรายการ API
http://localhost:57067/Help
โค๊ดที่เกี่ยวกับ WebApi นี้อยู่ที่ Controllers > ValuesController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace WebApi1.Controllers { public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } } }
3.ลองเรียกแบบ GET
3.1 ลองเรียกไปที่ http://localhost:57067/api/Values จะได้
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <string>value1</string> <string>value2</string> </ArrayOfstring>
จากหน้า ASP.NET Web API Help Page เมื่อคลิกดูที่ GET api/Values จะได้
สังเกตุว่า Response Formats มีทั้งแบบ JSON และ XML
3.2 ลองเรียกไปที่ http://localhost:57067/api/Values/1 จะได้
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">value</string>
จากหน้า ASP.NET Web API Help Page เมื่อคลิกดูที่ GET api/Values/{id} จะได้
สังเกตุว่า Response Formats มีทั้งแบบ JSON และ XML เหมือนกับ 3.1
ลองเรียกจาก Browser บน Notebook ได้ค่าคืนมาเป็น application/xml
แต่ลองเรียกจากอย่างอื่นที่ต้องการเป็น application/json ก็ใช้งานได้
เลยเข้าใจว่า WebApi ที่สร้างขึ้นมานี้ สามารถคืนค่าได้ทั้ง application/xml และ application/json
แต่ก็เป็น REST นะ ไม่ใช่ SOAP
4.กำหนดให้คืนค่าแบบ JSON ไม่คืนค่าแบบ XML
แก้ไขไฟล์ App_Start > WebApiConfig.cs
using System.Net.Http.Formatting; using System.Web.Http; namespace WebApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services config.Formatters.Clear(); config.Formatters.Add(new JsonMediaTypeFormatter()); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
บรรทัดที่ 11-12: กำหนดให้คืนค่าเฉพาะ application/json
ลองเรียกไปที่ http://localhost:57067/api/Values จะได้
["value1","value2"]
จากหน้า ASP.NET Web API Help Page เมื่อคลิกดูที่ GET api/Values จะได้
จะเห็นได้ว่า Response Formats เหลือแต่ JSON ละ