天天看點

C# 編寫Web API

1)建立Web API項目

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

C# 編寫Web API
C# 編寫Web API

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