1)建立Web API項目
打開VS2012->FILE->New->Project->Web->ASP.NET MVC 4 Web Application, 修改名字為WebAPIApplication, 單擊OK, 在Project Template中選擇Web API,單擊OK.

2)添加Controller Template選擇Empty API controller名字為StudentValueController.cs代碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MvcApplication22.Controllers
{
public class StudentValueController : ApiController
{
/// <summary>
/// 根據搜尋條件擷取學生資訊
/// GET /api/StudentValue/GetStudents?stuName=chad&stuAddress=jiaxing
/// </summary>
/// <param name="name">姓名</param>
/// <param name="address">位址</param>
/// <returns>滿足條件的學生資訊</returns>
[HttpGet]
public IEnumerable<StudentInfo> GetStudents(string stuName, string stuAddress)
{
using (DataClassesDataContext dcdc = new DataClassesDataContext())
{
List<StudentInfo> items = dcdc.StudentInfos.ToList();
if (stuName != null)
{
items = items
.Where(u => u.stuName.Contains(stuName)).ToList();
}
if (stuAddress != null)
{
items = items
.Where(u => u.stuAddress.Contains(stuAddress)).ToList();
}
return items;
}
}
/// <summary>
/// 根據學生編号擷取學生資訊
/// GET /api/StudentValue/GetStudentById/{id}
/// </summary>
/// <param name="id">編号</param>
/// <returns>學生資訊</returns>
[HttpGet]
public StudentInfo GetStudentById(int id)
{
using (DataClassesDataContext dcdc = new DataClassesDataContext())
{
return dcdc.StudentInfos
.FirstOrDefault(u => u.stuId.Equals(id));
}
}
/// <summary>
/// 添加學生資訊
/// POST /api/StudentValue/AddStudent
/// {stuName:'jack', stuAddress:'jiangsu'}
/// </summary>
/// <param name="item">學生資訊</param>
/// <returns>添加成功傳回學生資訊, 否則傳回null</returns>
[HttpPost]
public StudentInfo AddStudent(StudentInfo item)
{
try
{
using (DataClassesDataContext dcdc = new DataClassesDataContext())
{
dcdc.StudentInfos.InsertOnSubmit(item);
dcdc.SubmitChanges();
return item;
}
}
catch (Exception ex)
{
return null;
}
}
/// <summary>
/// 修改學生資訊
/// PUT /api/StudentValue/UpdateStudent/{id}
/// {stuName:'jack', stuAddress:'jiangsu'}
/// </summary>
/// <param name="id">編号</param>
/// <param name="item">新的學生資訊</param>
/// <returns>更新成功傳回學生資訊, 否則傳回null</returns>
[HttpPut]
public StudentInfo UpdateStudent(int id, StudentInfo item)
{
try
{
using (DataClassesDataContext dcdc = new DataClassesDataContext())
{
StudentInfo newItem = dcdc.StudentInfos
.FirstOrDefault(u => u.stuId == id);
newItem.stuName = item.stuName;
newItem.stuAddress = item.stuAddress;
dcdc.SubmitChanges();
return newItem;
}
}
catch (Exception ex)
{
return null;
}
}
/// <summary>
/// 删除學生資訊
/// DELETE /api/StudentValue/DeleteStudent/{id}
/// </summary>
/// <param name="id">編号</param>
/// <returns>删除成功傳回true, 否則傳回false</returns>
[HttpDelete]
public bool DeleteStudent(int id)
{
try
{
using (DataClassesDataContext dcdc = new DataClassesDataContext())
{
StudentInfo item = dcdc.StudentInfos
.FirstOrDefault(u => u.stuId.Equals(id));
dcdc.StudentInfos.DeleteOnSubmit(item);
dcdc.SubmitChanges();
return true;
}
}
catch (Exception ex)
{
return false;
}
}
}
}
3)修改WebApiConfig.cs内容如下,主要是修改API通路路徑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace MvcApplication2
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
4)用Firefox RESTClient測試編寫的API
提示:在Body中添加json資料時請在Headers中添加Content-Type: application/json