• 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

  • 相关阅读:
    Android中Intent传递对象的两种方法(Serializable,Parcelable)
    Android安全机制(2) Android Permission权限控制机制
    Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
    finder怎么才能找到library
    Mac下Android Studio中获取SHA1和MD5
    andorid 自定义seekbar
    C# Sending data using GET or POST ZZ
    gmail
    load dll
    C# Read/Write another Process' Memory ZZ
  • 原文地址:https://www.cnblogs.com/houzuofeng/p/3622784.html
Copyright © 2020-2023  润新知