1、创建项目

只是单纯的使用Web API的功能,而不需要使用的MVC,这个时候就该抛开MVC来新建项目了。

首先,新建一个Asp.Net空应用程序,在程序集中添加引用System.Web.Http和System.Web.Http.WebHost。

2、添加引用

继续添加System.Net.Http

另外还需要引用Json.Net,可以通过Nuget或者直接用下载好的dll

3、添加路由映射

添加路由映射,创建App_Start文件夹,新建WebApiConfig.cs文件,添加如下路由配置:

namespace WebAPIDemo2
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}

4、配置Global文件

新建Global.acax文件,在Application_Start中调用完成注册

namespace WebAPIDemo2
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
}
}
}

5、创建控制器

创建WebAPI控制器

在项目中添加Model到Models文件夹当中

BookChapter.cs

namespace WebAPIDemo2.Models
{
public class BookChapter
{
///
/// 数量
///
public int Number { get; set; }
///
/// 标题
///
public string Title { get; set; }
///
/// 页数
///
public int Pages { get; set; }
}
}
Book.cs
using System.Collections.Generic;
using System.Linq;
namespace WebAPIDemo2.Models
{
public class Book
{
public Book(int id, string title, params BookChapter[] chapters)
{
this.Id = id;
this.Title = title;
this.BookChapters = chapters.ToList();
}
public int Id { get; private set; }
public string Title { get; private set; }
public ICollection BookChapters { get; private set; }
}
}

在项目中新建控制器

BookChaptersController.cs
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using WebAPIDemo2.Models; namespace WebAPIDemo2.Controllers
{
public class BookChaptersController : ApiController
{
// GET api/bookchapters
[HttpGet]
public IEnumerable Get()
{
return chapters;
} // GET api/bookchapters/5
public BookChapter Get(int id)
{
return chapters.Where(c => c.Number == id).SingleOrDefault();
} // POST api/bookchapters
[AcceptVerbs("POST")]
[ActionName("bookchapter")]
public void PostBookChapter([FromBody]BookChapter value)
{
chapters.Add(value);
} // PUT api/bookchapters/5
public void PutBookChapter(int id, [FromBody]BookChapter value)
{
chapters.Remove(chapters.Where(c => c.Number == id).Single());
chapters.Add(value);
} // DELETE api/bookchapters/5
public void DeleteBookChapter(int id)
{
chapters.Remove(chapters.Where(c => c.Number == id).Single());
} private static List chapters; static BookChaptersController()
{
chapters = new List()
{
new BookChapter{Number=1,Title=".Net Architecture",Pages=20},
new BookChapter{Number=2,Title=".Net ",Pages=120},
new BookChapter{Number=3,Title=".Net a",Pages=480},
new BookChapter{Number=4,Title=".Net b",Pages=200},
new BookChapter{Number=5,Title=".Net c",Pages=210},
new BookChapter{Number=17,Title=".Net d",Pages=230},
new BookChapter{Number=42,Title=".Net e",Pages=270},
new BookChapter{Number=43,Title=".Net f",Pages=320},
new BookChapter{Number=50,Title=".Net g",Pages=520}
};
}
}
}
BookChaptersAttrController.cs
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using WebAPIDemo2.Models; namespace WebAPIDemo2.Controllers
{
//添加路由前缀
[RoutePrefix("booksamples")]
public class BookChaptersAttrController : ApiController
{
private static List chapters;
private static List books; static BookChaptersAttrController()
{
chapters = new List
{
new BookChapter{Number=1,Title=".Net Architecture",Pages=20},
new BookChapter{Number=2,Title=".Net ",Pages=120},
new BookChapter{Number=3,Title=".Net a",Pages=480},
new BookChapter{Number=4,Title=".Net b",Pages=200},
new BookChapter{Number=5,Title=".Net c",Pages=210},
new BookChapter{Number=17,Title=".Net d",Pages=230},
new BookChapter{Number=42,Title=".Net e",Pages=270},
new BookChapter{Number=43,Title=".Net f",Pages=320},
new BookChapter{Number=50,Title=".Net g",Pages=520}
};
books = new List()
{
new Book(1, "Professional C#", chapters.ToArray()),
new Book(2, "Professional Asp.Net MVC 4")
};
}
//单参数路由
[Route("books/{bookId}")]//URL:http://server/books/2
public IEnumerable GetBookChapters(int bookId)
{
return books.Where(b => b.Id == bookId).Single().BookChapters;
} //多参数路由
[Route("books/{bookId}/chapters/{chapterId}")]//URL:http://server/books/2/chapters/17
//类型限制参数
//[Route("books/{bookId:int}/chapters/{chapterId:int}")]
public BookChapter GetBookChapter(int bookId, int chapterId)
{
return
books.Single(b => b.Id == bookId)
.BookChapters.SingleOrDefault(c => c.Number == chapterId);
}
}
}

6、项目结构如下:

纯WebApi,不包含MVC Demo的更多相关文章

  1. 如何在一个项目中同时包含mvc建站、webapi接口

    项目做得多了..就会发现有些小项目不想建太多的项目..现在思明在这里和大家分享一下如果再一个项目中同时包含mvc建站以及实现webapi接口 1.新建项目 aps.net web 应用程序 2 新建模 ...

  2. indexedDB bootstrap angularjs 前端 MVC Demo

    前端之MVC应用 1.indexedDB(Model): 数据层,前端浏览器 HTML5 API 面向对象数据库,一般现在用的数据库都是关系型数据库. 那么indexeddb有什么特点呢: 首先,从字 ...

  3. bootstrapValidator 使用(包含入门demo,常用方法,以及常用的规则)

    一   什么是bootstrapValidator?    -- 一个基于 jquery,boostrap 的表单验证框架....简单实用上手快,页面美观还过得去,不废话了,直接撸. 二  boots ...

  4. (MVC — — Demo)客户管理系统的开发日志

    点击一下 目录 第一步:搭建开发环境 第二步:层次包(按照三层架构思想写) 第四步:开发(utils)工具包 第四步:开发 Dao 层 第五步:开发 services 层 第六步:开发 factory ...

  5. ajax 跨域webapi 最简单的demo(只介绍Get)

    这几天遇到一个nodejs的项目,使用VSCode开发,需要连接数据库的,但是用nodejs连接数据库比较繁琐,需要安装很多东西,本人也懒得去研究了.后来想到建一个WebAPI然后用ajax来调用,避 ...

  6. Mvc 自带分页控件PagedList.Mvc Demo示例

    添加/下载PagedList.Mvc 直接搜索mvc pagelist 就会出来.安装完成即可.在项目的packages文件夹下面就会出现PagedList.Mvc.4.5.0.0 和PagedLis ...

  7. WebApi增删改查Demo

    1.新建webapi项目 2.配置WebApiConfig public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute"; p ...

  8. 《Head First Servlets & JSP》-3-1st servlet MVC demo

    项目结构 用户首页 form.html <html> <body> <h1 align='center'>Beer Selection Page</h1> ...

  9. 初学者配置第一个spring mvc Demo

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

随机推荐

  1. 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!

    如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...

  2. 背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  3. 2D、3D形变

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } span.Apple-tab-span { ...

  4. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验

    Power BI有手机版,目前支持安卓,苹果和WP,不过没有WP手机,苹果在国内还不能用,要FQ和用就不测试了.安卓的我也也是费了九牛二虎之力才把app下载下来,把方法分享给大家. FQ太麻烦,所以建 ...

  5. Hawk 4.4 执行器

    执行器是负责将Hawk的结果传送到外部环境的工具.你可以写入数据表,数据库,甚至执行某个特定的动作,或是生成文件等等. 在调试模式下,执行器都是不工作的.这是为了避免产生副作用.否则,每刷新一遍数据, ...

  6. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  7. Android 指纹认证

    安卓指纹认证使用智能手机触摸传感器对用户进行身份验证.Android Marshmallow(棉花糖)提供了一套API,使用户很容易使用触摸传感器.在Android Marshmallow之前访问触摸 ...

  8. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  9. Hadoop伪分布式集群环境搭建

    本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...

  10. IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页

    因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...