Web API系列之三 基本功能实现

Web API系列之二讲解了如何搭建一个WebApi的基架,本文主要在其基础之上实现基本的功能.下面开始逐步操作:

一、配置WebApi的路由-用于配置外部如何访问内部资源的url的规则

1、添加Global.asax文件

右键项目-选择添加新项

添加成功,修改Global.asax.cs文件,代码如下:

using System;
using System.Web.Http;

namespace WebApiApp
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            //配置WebApi的路由
            GlobalConfiguration.Configuration.Routes.MapHttpRoute(
                name:"default_api",
                routeTemplate: "{controller}/{item}",
                defaults: new { item=RouteParameter.Optional}
            );
        }
    }
}

ok,路由配置完成

二、模拟数据仓储,用于提供测试的数据,代码如下:

using System.Collections.Generic;
namespace WebApiApp.Models
{
    public static class Storages
    {
        public static IEnumerable<Student> Students { get; set; }

        static Storages()
        {
            Students = new List<Student>
            {
                new Student{Id=1,Name="张1" },
                new Student{Id=2,Name="张2" },
                new Student{Id=3,Name="张3" }
            };
        }
    }
    public class Student
    {
            public int Id { get; set; }
            public string Name { get; set; } 
    }
}

三、编写Api控制器,通过该控制器向外部暴露数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using WebApiApp.Models;

namespace WebApiApp.Controllers
{
    /// <summary>
    /// 当前控制器下的所有方法相当于是一个关于学生资源的集合,里面封装着对学生的所有操作.
    /// </summary>
    public class StudentController:ApiController
    {
        /// <summary>
        /// Get /students/   -return student list
        /// </summary>
        /// <returns></returns>
        public IEnumerable<Student> Get()
        {
            return Storages.Students;
        }

        /// <summary>
        /// Get /students/zhangsan -return entity
        /// </summary>
        /// <returns></returns>
        public Student Get(string name)
        {
            return Storages.Students.FirstOrDefault(w => w.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
        }
    }
}

至此基本功能全部实现,现在可以开始运行项目,测试功能.

四、测试

向浏览器中输入   项目地址/Student

项目地址/Student?name=张1

ok,说明项目部署成功.

注:服务器端返回xml的原因是:浏览器向服务端请求的就是xml数据,如下图示:

Chrome浏览器接收服务器端返回的数据类型默认的优先级是:html>xhtml+xml>xml>webp>所有(前面的类型都没有的话就所有了咯)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统

这一节我们来跑通整个系统,验证的流程,通过AOP切入方式,在访问方法之前,执行一个验证机制来判断是否有操作权限(如:增删改等) 原理:通过MVC自带筛选器,在筛...

7017
来自专栏大内老A

ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II

二、ASP.NET Runtime Pipeline(续ASP.NET Http Runtime Pipeline - Part I) 现在我们真正进入ASP....

2058
来自专栏柠檬先生

Angularjs基础(四)

AngularJS过滤器     过滤器可以使用一个管道符(|)添加到表达式和指令中。       AngularJS过滤器可用于转换数据:    ...

2049
来自专栏技术博客

ExtJs四(ExtJs MVC登录窗口的调试)

继上一节中实现了验证码http://www.cnblogs.com/aehyok/archive/2013/04/19/3030212.html,现在我们可以进...

1262
来自专栏林德熙的博客

WPF 如何在绑定失败异常

在开发 WPF 程序,虽然 xaml 很好用,但是经常会出现小伙伴把绑定写错了。因为默认的 VisualStudio 是没有自动提示,这时很容易复制粘贴写出一个...

2581
来自专栏进击的君君的前端之路

Sass 和 SCSS 有什么区别?

711
来自专栏张高兴的博客

张高兴的 Windows 10 IoT 开发笔记:无线收发芯片 nRF24L01

1212
来自专栏bluesummer

StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行...

3639
来自专栏Porschev[钟慰]的专栏

asp.net生成静态页

做个生成静态页示例: 采用替换模版页的形式生成静态页 第一步:新建项目,创建一个简单模版页:TemplatePage.htm <!DOCTYPE html PU...

2146
来自专栏魂祭心

原 WCF学习之旅----基础篇之Ente

2746

扫码关注云+社区

领取腾讯云代金券