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的更多相关文章
-
如何在一个项目中同时包含mvc建站、webapi接口
项目做得多了..就会发现有些小项目不想建太多的项目..现在思明在这里和大家分享一下如果再一个项目中同时包含mvc建站以及实现webapi接口 1.新建项目 aps.net web 应用程序 2 新建模 ...
-
indexedDB bootstrap angularjs 前端 MVC Demo
前端之MVC应用 1.indexedDB(Model): 数据层,前端浏览器 HTML5 API 面向对象数据库,一般现在用的数据库都是关系型数据库. 那么indexeddb有什么特点呢: 首先,从字 ...
-
bootstrapValidator 使用(包含入门demo,常用方法,以及常用的规则)
一 什么是bootstrapValidator? -- 一个基于 jquery,boostrap 的表单验证框架....简单实用上手快,页面美观还过得去,不废话了,直接撸. 二 boots ...
-
(MVC — — Demo)客户管理系统的开发日志
点击一下 目录 第一步:搭建开发环境 第二步:层次包(按照三层架构思想写) 第四步:开发(utils)工具包 第四步:开发 Dao 层 第五步:开发 services 层 第六步:开发 factory ...
-
ajax 跨域webapi 最简单的demo(只介绍Get)
这几天遇到一个nodejs的项目,使用VSCode开发,需要连接数据库的,但是用nodejs连接数据库比较繁琐,需要安装很多东西,本人也懒得去研究了.后来想到建一个WebAPI然后用ajax来调用,避 ...
-
Mvc 自带分页控件PagedList.Mvc Demo示例
添加/下载PagedList.Mvc 直接搜索mvc pagelist 就会出来.安装完成即可.在项目的packages文件夹下面就会出现PagedList.Mvc.4.5.0.0 和PagedLis ...
-
WebApi增删改查Demo
1.新建webapi项目 2.配置WebApiConfig public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute"; p ...
-
《Head First Servlets & JSP》-3-1st servlet MVC demo
项目结构 用户首页 form.html <html> <body> <h1 align='center'>Beer Selection Page</h1> ...
-
初学者配置第一个spring mvc Demo
1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...
随机推荐
-
【Python】:简单爬虫作业
使用Python编写的图片爬虫作业: #coding=utf-8 import urllib import re def getPage(url): #urllib.urlopen(url[, dat ...
-
Eclipse卸载插件
Eclipse卸载插件 ### 本人Eclipse版本为:Eclipse Mars 1. 选择: Help -> Install New Software , 如下图:2. 点击 what is ...
-
maven入门程序(3)
欢迎转载交流:http://www.cnblogs.com/shizhongtao/p/3472864.html 这里我将展示如何用maven快速创建一个基于spring的web框架.创建步骤和上一篇 ...
-
DWZ框架学习一
测试DWZ框架弹出框设置成模态 刚刚上手DWZ框架,感觉灰常好用,对于我这种特别懒的人来说,真的是拖拽编程 看了下官方的视频讲解,自己试着做了一个小测试,里面的组件什么的都不用写,直接拿来用 这里附上 ...
-
maven隐式依赖引起的包冲突
包冲突 使用maven管理项目时可能会遇到包冲突的情况比如:log4j-over-slf4j.jar 和 slf4j-log4j12.jar这两个包同时一起运行时就会有问题. 这种冲突可能是显式依赖导 ...
-
masm6.11的BUG?
mov eax,[ebp + eax] ;->DS: mov eax,[eax + ebp] ;->SS: 上述2行代码生成的机器码反了,据说masm8也有此问题,但是masm9是正常的.
-
IOS 将状态栏改为白色
1.将 View controller-based status bar appearance 删除(默认为 YES),或设置为YES 2.设置rootViewcontroller,如果为viewC ...
-
一个按成绩排序SQL的写法问题
测试数据: SQL> select * from sscore; NAME SCORE ---------- ----- aa 99 bb ...
-
Jenkins简介
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和 ...
-
debian 安装使用NTP
编程之路刚刚开始,错误难免,希望大家能够指出. 领导要求,要4台机器时钟同步,上网查了查,主要看了看ptp和ntp,感觉ntp就够用,索性就直接上手ntp了. 以下内容纯属最基础的内容,只适合第一次接 ...