- สร้างโปรเจ็กส์ 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 ละ