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视频

目录
相关文章
|
IDE Linux 开发工具
Linux 实操篇-Linux 磁盘分区、挂载
Linux 实操篇-Linux 磁盘分区、挂载
353 0
|
机器学习/深度学习 弹性计算 TensorFlow
在阿里云上打造强大的模型训练服务
随着人工智能技术的迅猛发展,模型训练服务变得愈发关键。阿里云提供了一系列强大的产品,使得在云端轻松搭建、优化和管理模型训练变得更加便捷。本文将详细介绍如何使用阿里云的相关产品构建高效的模型训练服务。
1042 0
|
安全 中间件 数据安全/隐私保护
中间件的定义,包括它的功能、应用场景以及优势。
中间件是位于操作系统和应用软件间的系统软件,提供数据交换、应用集成、流程管理和安全保障等服务。常用于分布式系统、微服务架构和企业级应用,实现高效、低耦合的系统运行。其优势在于降低开发成本、提升系统性能、简化扩展和维护。中间件推动了软件技术的发展和创新。
2046 1
|
5月前
|
存储 缓存 人工智能
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
Mooncake 的架构设计兼具高性能和灵活性,为未来的扩展性和生态建设奠定了坚实基础。
|
11月前
|
监控 供应链 前端开发
浏览器拨测:将网站护航的阵地再前推一米
近年来,针对网站的攻击形式愈发多样,手段也变得更加隐蔽,使用浏览器拨测来监控服务的整个生命周期有助于及时发现攻击,保护核心业务链路不受损。阿里云监控浏览器拨测使用真实的浏览器进行拨测,通过提供丰富的断言能力和脚本录制能力护航服务的全生命周期和核心业务链路,助力开发者更好地监控服务的可用性,消除潜在风险。
384 126
浏览器拨测:将网站护航的阵地再前推一米
|
Java 测试技术 开发者
探索软件测试的多维度:从单元到系统,再到性能测试
本文深入探讨了软件测试的多个关键维度,包括单元测试、集成测试、系统测试以及性能测试。通过分析每个阶段的目标和方法,本文旨在帮助读者理解如何构建一个全面的测试策略,确保软件产品的质量与性能。我们将通过具体案例和数据来揭示不同测试阶段的重要性及其在软件开发生命周期中的作用。
294 17
|
存储 安全 JavaScript
解释 XSS 攻击及其预防措施
【8月更文挑战第31天】
1189 0
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
3631 0
|
Kubernetes Linux Docker
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
301 2
|
数据可视化 数据安全/隐私保护
DataV 发布分享 Token 验证
有很多同学希望把 DataV 创建的数据可视化大屏整合到自己的网站中,我们很早就提供了这样的支持。 但是如果限定权限则成为了一个问题。 如你嵌入到自己网站中的大屏,可能不希望被别人提取出来,自己打开。
8333 0