zoukankan      html  css  js  c++  java
  • 2017529学习记录——WebApi(1)

    曾经我一直认为Web服务器的Api使用ashx或ASP.NET MVC中返回JsonResult来实现的。

    当我第一次接触WCF的时候,有同学告诉我目前比较流行WebApi和WebSocket了,于是我还担心着我怎么总在学不咋用了的技术哟。

    今天第一次使用WebApi

    具体步骤:

      1、首先我创建了一个ASP.NET的空项目 

      2、在根目录创建了Controllers和Models文件夹

      3、在Models文件夹下创建仓储(Storages.cs)、人(Person.cs)、学生(Student)、教师(Teacher)类并模拟了Student数据  如下:

      

      public static class Storages
        {
            public static IEnumerable<Student> Students { get; set; }
            public static IEnumerable<Teacher> Teachers { get; set; }
            static Storages()
            {
                Students = new List<Student>()
                {
                    new Student(){
                        Id=1,
                        Age=18,
                        Gender=false,
                        Name="Gxq"
                    },
                    new Student(){
                        Id=2,
                        Age=18,
                        Gender=false,
                        Name="Gxq2"
                    },
                    new Student(){
                        Id=3,
                        Age=18,
                        Gender=false,
                        Name="Gxq3"
                    },
                    new Student(){
                        Id=4,
                        Age=18,
                        Gender=false,
                        Name="Gxq4"
                    }
                };
                Teachers = new List<Teacher>();
            }
        }
    
        public class Person
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public bool Gender { get; set; }
        }
    
        public class Student : Person
        {
    
        }
    
        public class Teacher : Person
        {
    
        }

      4、在Controllers文件夹下创建StudentsController.cs(学生)和TeachersController.cs(教师)控制器

       public class StudentsController : ApiController
        {
            public IEnumerable<Student> Get()
            {
                return Storages.Students;
            }
    
            public Student Get(string item)
            {
                return Storages.Students.FirstOrDefault(u => u.Name == item);
            }
    
            public void Post(Student entity)
            {
                IList<Student> list = Storages.Students as IList<Student>;
                entity.Id = list.Max(s => s.Id) + 1;
                list.Add(entity);
            }
            public void Put([FromUri]string item, [FromBody] Student entity)
            {
                Delete(item);
                Post(entity);
            }
    
            public void Delete([FromUri]string item)
            {
                var entity = getAdmin(item);
                IList<Student> list = Storages.Students as IList<Student>;
                list.Remove(entity);
            }
        }
    
       public class TeachersController : ApiController
        {
    
        }

      5、新建Global.asax文件配置WebApi路由

     1     public class Global : System.Web.HttpApplication
     2     {
     3 
     4         protected void Application_Start(object sender, EventArgs e)
     5         {
     6              GlobalConfiguration.Configuration.Routes.MapHttpRoute(
     7                 "default_api",
     8                  "{controller}/{item}",
     9                  new
    10                  {
    11                      item = RouteParameter.Optional
    12                  });
    13         }
    14     }

      6、现在就完成了WebApi的CRUD,但似乎遇到了些问题:

        1、我不知道怎样去判断调用那个具体的方法,通过请求方式与方法名对应的匹配吗?

        2、我在路由规则改为{Controller}/{Action}/{Item}后将Get方法名改为Admin后显示的调用Admin它提示我没有提供Get的方法,但我将Get改为GetAdmin后、显示的输入GetAdmin即可找到对应方法,难道必须带有Get标识吗

        3、其他问题正在学习研究中...以上学习的代码有参考传智播客的.NET视频

  • 相关阅读:
    SQL查询Profile设置
    AP如何定义发票的行分配账户的默认值
    使用UTL_MAIL包实现存储过程邮件发送(转)
    如何优化库存管理
    VS2008 一个IDE配色方案
    Rails2的部分新特性
    TDD Tip:方法内部New出来的对象如何Mock
    我的2008
    rails2.2 无法加载mysql的解决
    ASP.NET MVC AJAX的调用
  • 原文地址:https://www.cnblogs.com/Gxqsd/p/6918965.html
Copyright © 2011-2022 走看看