曾经我一直认为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.HttpApplication2     {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视频

转载于:https://www.cnblogs.com/Gxqsd/p/6918965.html

2017-5-29学习记录——WebApi(1)相关推荐

  1. 2017.5.23 -- 学习记录

    学习目录: 1.ViewStub Android :不占空间和性能的根据不同情况显示不同的布局. 2.android 中的merge标签: 在include布局中的根布局可以使用这个merge,系统遇 ...

  2. 12月29日--Java中有关类与对象的学习记录

    1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...

  3. linux个人学习记录

    linux学习记录 资料: Linux 黑马程序员_bilibili AcWing Linux基础课 可能是东半球最全面易懂的 Tmux 使用教程! Shell 教程 | 菜鸟教程 (runoob.c ...

  4. 【文化课每周学习记录】高三上暑假

    日程表(无特殊安排时) 时间 内容 6:00~6:30 早饭,穿插识记 6:30~9:00 完成学习任务 9:00~10:30 语文补习 10:30~11:30 完成学习任务 11:30~13:00 ...

  5. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  6. 自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索、推荐以及算法相关工作。多年来主要从事推荐系统以及机

    自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索.推荐以及算法相关工作.多年来主要从事推荐系统以及机 ...

  7. [Django]模型学习记录篇--基础

    模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...

  8. leveldb 学习记录(四)Log文件

    前文记录 leveldb 学习记录(一) skiplist leveldb 学习记录(二) Slice leveldb 学习记录(三) MemTable 与 Immutable Memtable le ...

  9. Spring学习记录(九)---通过工厂方法配置bean

    1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. 1 package com.guigu.spring.factory; 2 3 public c ...

  10. 2019.7.29学习整理python

    2019.7.29学习整理python 1.变量 1.1什么是变量? 是变化的量.描述变化的世间万物的状态 1.2变量的组成 变量名:变量名用来引用变量值,但凡需要用变量值,都需要通过变量名. 赋值符 ...

最新文章

  1. .NETCore 下支持分表分库、读写分离的通用 Repository
  2. python面试题及答案-5个很好的Python面试题问题答案及分析
  3. Response_输出数据,实现文件下载,定时刷新页面,是否缓存,重定向,实现验证码...
  4. centos7扩展根分区
  5. linux 构建 无线网络 过程
  6. MapReduce分区-代码实现
  7. 深度学习在美图个性化推荐的应用实践
  8. 只需5步,轻松创建HTML5离线应用
  9. T-SQL with关键字
  10. 我的宝贝干女儿--可可
  11. linux多线程学习(四)——互斥锁线程控制
  12. php生成静态翻页,PHP高手,我刚刚学PHP,在生成静态分页遇到了点有关问题,就是翻页的有关问题,希望可以給出一个漂亮完整的翻页代码,多谢...
  13. android启动模式
  14. 线程停止继续_Java并发学习第二弹:如何正确停止线程?
  15. overleaf 插入visio图像
  16. 电脑系统服务器丢失怎么办,电脑本地连接不见了,小编教你怎么解决
  17. 古典问题:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子都不死,问3年后的兔子总数是多少?
  18. beyond compare java_文件内容比较工具---Text compare Beyond compare
  19. 天猫精灵 python 控制_天猫精灵的高阶玩法-控制我的电脑
  20. RPA财务软件对社会的影响

热门文章

  1. 部署Django REST Framework服务(Nginx + uWSGI + Django)
  2. 基于Docker搭建Gitlab
  3. (转)log4j(二)——如何控制日志信息的输出?
  4. 【HDU - 4342】History repeat itself(数学)
  5. 反射:集合泛型的本质
  6. vant组件二次封装-下拉刷新列表组件
  7. setFitView的zoom只是整数,导致缩放尺寸不合适的解决方案
  8. mysql hibernate 分页查询_Hibernate如何实现分页查询
  9. oracle判断字符串以什么开头_sql语句判断字符串以什么什么开头
  10. indesign缩放图片被切割_InDesign怎么改变图片的大小