zoukankan      html  css  js  c++  java
  • ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查。
    目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的。
    下面我们通过创建一个简单的Web API来管理联系人
    说明:为了方便数据不使用真正的数据库,而是通过内存数据模拟

     1.       Web API中包含的方法

    Action

    HTTP method

    Relative URI

    GetAllContact

    GET

    /api/contact

    GetContact

    GET

    /api/contact /id

    GetListBySex

    GET

    /api/contact?sex=sex

    PostContact

    POST

    /api/contact

    PutContact

    PUT

    /api/contact/id

    DeleteContact

    DELETE

    /api/contact/id

    http 四个主要的处理方法(get,put,post,delete)能够用来处理匹配增删改查操作:

    Get 可以在服务端检索匹配URI匹配的资源,不会对服务器数据进行修改操作

    Put 用户修改URI指定的特定资源,如果服务端允许,Put 也可以用户创建新的资源

    Post 可以用于创建一个资源。服务端会为这个资源创建一个新的URI,并且将这个资源作为ResposeMessage 的一部分返回

    Delete 用户删除URI匹配的资源 

    2.  创建一个工程

    启动VS2012,在已经安装的模板中选择ASP.NET MVC4 Web 应用程序,单击确定

    在ASP.NET MVC 4 项目对话框中选择 Web API,单击确定

    (3) 添加一个Model,工程选择Models文件夹右键添加一个实体类,代码如下

    public class Contact
        {
            public int ID { get; set; }

            public string Name { get; set; }

            public string Sex { get; set; }

            public DateTime Birthday { get; set; }

            public int Age { get; set; }

    }

    (4) 添加一个数据操作接口

    public interface IContactRep
        {
            /// <summary>
            /// 查询所有
            /// </summary>
            /// <returns></returns>
            IEnumerable<Contact> GetListAll();

            /// <summary>
            /// 根据ID查询
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            Contact GetByID(int id);

            /// <summary>
            /// 添加
            /// </summary>
            /// <param name="contact"></param>
            /// <returns></returns>
            Contact Add(Contact contact);

            /// <summary>
            /// 根据ID删除
            /// </summary>
            /// <param name="id"></param>
            void Remove(int id);

            /// <summary>
            /// 修改
            /// </summary>
            /// <param name="contact"></param>
            /// <returns></returns>
            bool Update(Contact contact);

        }

     (5)  添加数据操作接口实现类 

    public class ContactRep : IContactRep
        {
            private Log.Log log = Log.Log.Instance(typeof(ContactRep));
            private List<Contact> list = new List<Contact>();
            public ContactRep()
            {
                log.Info("执行构造方法");
                list.Add(new Contact() { ID = 1, Age = 23, Birthday = Convert.ToDateTime("1977-05-30"), Name = "情缘", Sex = "男" });
                list.Add(new Contact() { ID = 2, Age = 55, Birthday = Convert.ToDateTime("1937-05-30"), Name = "令狐冲", Sex = "男" });
                list.Add(new Contact() { ID = 3, Age = 12, Birthday = Convert.ToDateTime("1987-05-30"), Name = "郭靖", Sex = "男" });
                list.Add(new Contact() { ID = 4, Age = 18, Birthday = Convert.ToDateTime("1997-05-30"), Name = "黄蓉", Sex = "女" });
            }

            public IEnumerable<Contact> GetListAll()
            {
                return list;
            }

            public Contact GetByID(int id)
            {
                return list.Find(item => item.ID == id);
            }

            public Contact Add(Contact contact)
            {
                if (contact == null)
                {
                    throw new NullReferenceException("空引用异常");
                }
                int maxid = list.Max(item => item.ID);
                contact.ID = maxid + 1;
                list.Add(contact);
                return contact;
            }

            public void Remove(int id)
            {
                list.RemoveAll(item=>item.ID==id);
            }

            public bool Update(Contact contact)
            {
                if (contact == null)
                {
                    throw new NullReferenceException("空引用异常");
                }
                Remove(contact.ID);
                list.Add(contact);
                return true;
            }

        } 

    (6)在Controllers文件中添加一个APIController 

     3. 获得一个资源

    Action

    HTTP method

    Relative URI

    GetAllContact

    GET

    /api/contact

    GetContact

    GET

    /api/contact/id

    GetListBySex

    GET

    /api/contact?sex=sex

    获得所有联系人

    public IEnumerable<Contact> GetAllContact()
    {
                return provider.GetListAll();

    这个方法以Get开头,用于匹配Get方式请求,因为这个方法没有参数,所以这个方法将匹配/api/contact的请求

    根据id获得联系人

    public Contact GetContact(int id)
    {
                Contact contact = provider.GetByID(id);
                if (contact == null)
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }
                return contact;

    这个方法也是以Get方式开头,而这个方法包含一个id参数,这个方法会匹配/api/contact/id 的请求,而请求中的参数id会自动转换为int类型

    如果没有找到相应id的联系人,则会抛出一个HttpResponseMessage的异常,这个异常是指向的404异常,请求资源不存在。

    根据性别获得资源

    public IEnumerable<Contact> GetListBySex(string sex)
    {
                return provider.GetListAll().Where(item => item.Sex == sex);

    如果一个请求中包含了一个查询的参数,web api 将尝试匹配/api/contact?sex=sex

  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/houzuofeng/p/3622784.html
Copyright © 2011-2022 走看看