2017-5-29学习记录——WebApi(1)

简介: 曾经我一直认为Web服务器的Api使用ashx或ASP.NET MVC中返回JsonResult来实现的。当我第一次接触WCF的时候,有同学告诉我目前比较流行WebApi和WebSocket了,于是我还担心着我怎么总在学不咋用了的技术哟。

曾经我一直认为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 Java 程序员
谷粒学苑项目实战(十三):课程管理模块搭建
谷粒学苑项目实战(十三):课程管理模块搭建
189 0
谷粒学苑项目实战(十三):课程管理模块搭建
|
前端开发
谷粒学苑项目实战(十五):实现单点登录与注册功能
谷粒学苑项目实战(十五):实现单点登录与注册功能
173 0
|
编解码 JavaScript 前端开发
WebApi入门第一章(WebApi介绍)
WebApi入门第一章(WebApi介绍)
327 0
WebApi入门第一章(WebApi介绍)
|
JavaScript 索引
WebApi入门第十二章(原生轮播图 )(完结)
WebApi入门第十二章(原生轮播图 )(完结)
140 0
WebApi入门第十二章(原生轮播图 )(完结)
WebApi入门第八章(模拟百度搜索框 )
WebApi入门第八章(模拟百度搜索框 )
77 0
|
存储 XML 移动开发
【重温基础】17.WebAPI介绍
【重温基础】17.WebAPI介绍
170 0
|
NoSQL Redis 数据库
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
|
缓存 API 网络架构
WebAPI简介
有三个核心:资源(resource),URL(统一资源标识符)和表示
355 0
WebAPI简介
|
存储 缓存 前端开发
为什么我要推荐你使用Core WebApi?
为什么我要推荐你使用Core WebApi?
293 0
为什么我要推荐你使用Core WebApi?
FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发