初始WebApi 利用WebApi实现基础的CRUD
微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService。它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:
GET:生到数据列表(默认),或者得到一条实体数据
POST:添加服务端添加一条记录,记录实体为Form对象
PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输
DELETE:删除 服务端的一条记录
注意上面公开的API接口都是在XMLHttpRequest情况下调用的,当然你可以使用jquery的ajax组件来完成这个请求调用,它的代码更加面向对象,下面举例说明一下
这是页面的HTML代码部分,实现最基本的CRUD操作
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
</head>
<body>
<fieldset>
<a href="javascript:add()">添加(Add)</a>
<a href="javascript:Put(4)">更新(Put)</a>
<a href="javascript:Delete()">删除(Delete)</a>
<a href="javascript:getAll()">获取所有</a>
</fieldset>
<script type="text/javascript">
function getAll() {
$.ajax({
url: "/api/Values",
type: "Get",
success: function (data) {
alert(JSON.stringify(data));
}
});
}
function add() {
$.ajax({
url: "/api/Values",
type: "Post",
data: {"UserId":,UserName:"壮老大",Age:,Emali:"zhuanglaoda@qq.com"},
success:function(data) {
alert(JSON.stringify(data));
}
});
} function Put(id) {
$.ajax({
url: "/api/Values?id="+id,
type: "put",
data: { "UserId": , UserName: "壮老大(Update)", Age: , Emali: "zhuanglaoda@qq.com" },
});
} function Delete() {
$.ajax({
url: "/api/Values",
type: "Delete",
data: { "id": },
});
}
</script>
</body>
</html>
后台代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace WebApiDemo.Controllers
{
public class ValuesController : ApiController
{
public static List<User> UserList = new List<User>
{
new User{ UserId=1,UserName="大壮", Age=1, Emali="dazhuang@qq.com"},
new User{ UserId=2,UserName="小壮", Age=10, Emali="xiaozhuang@qq.com"},
new User{ UserId=3,UserName="壮壮", Age=20, Emali="zhuangzhuang@qq.com"}
};
// GET api/values
public IEnumerable<User> Get()
{
return UserList;
} // GET api/values/5
public User Get(int id)
{
return UserList.FirstOrDefault(c=>c.UserId==id);
} // POST api/values
public bool Post([FromBody]User user)
{
UserList.Add(user);
return true;
} // PUT api/values/5
public bool Put(int id, [FromBody]User user)
{
var temp_user = UserList.FirstOrDefault(c => c.UserId == id);
if (temp_user != null)
{
temp_user.UserName = user.UserName;
temp_user.Age = user.Age;
temp_user.Emali = user.Emali;
}
return true;
} // DELETE api/values/5
public bool Delete(int id)
{
UserList.Remove(UserList.FirstOrDefault(c=>c.UserId==id));
return true;
} public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public int Age { get; set; }
public string Emali { get; set; }
}
}
}
值得注意的一点,如果网站地址是:127.0.0.1/ 如果API接口的控制器是values 默认路由规则的话127.0.0.1/values是可以访问的,但是要注意,由于所有的API控制器是集成了ApiController,所以默认的路由规则是不起作用的。
笔者也被坑了一会,后来看App_Start在WebApiConfig中看到注册了一个这样的方法
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。
// 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。
// 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。
//config.EnableQuerySupport(); // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行
// 有关详细信息,请参阅: http://www.asp.net/web-api
config.EnableSystemDiagnosticsTracing();
}
大家懂了吧, 在API接口前面加api就可以访问了,或者像MVC路由那样在注册几个路由也是可以的。
对于WebApiConfig的具体实现,目前我也是刚接触,我们后面讨论,
初始WebApi 利用WebApi实现基础的CRUD的更多相关文章
- webapi 利用webapiHelp和swagger生成接口文档
webapi 利用webapiHelp和swagger生成接口文档.均依赖xml(需允许项目生成注释xml) webapiHelp:微软技术自带,仅含有模块.方法.请求-相应参数的注释. swagge ...
- EntityFramework 基础的crud
EntityFramework 基础的crud操作 根据上一张实体映射的demo学习基础的crud操作 1.增加 BlogDbContext dbContext = new BlogDbContext ...
- 利用WebApi获取手机号码归属地
前述: 在WebApi中,涉及到一个重要的类,HttpWebRequest. 学习link:httpwebrequest详解 示例演示: 代码示例: 1.前端代码: @{ ViewBag.Title ...
- 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...
- WebApi 身份认 Basic基础认证
<body> <div style="text-align:center;"> <div>用户名:<input type="te ...
- .NetCore WebApi利用Swagger文档实现选择文件上传
介绍 实现这个功能主要还是依赖过滤器 在Swagger中利用 IOperationFilter 操作来实现文件上传 与之前处理结合Idr4授权一样的处理方式,不同的是授权处理的是Security,而文 ...
- .NET WebAPI 利用特性捕捉异常
声明:本方式及代码只使用与.NET Web API. 先创建类继承ExceptionFilterAttribute类型并复写OnException方法. 代码如下: using System; usi ...
- What are the differences between WebAPI and WebAPI 2
http://stackoverflow.com/questions/21298961/what-are-the-differences-between-webapi-and-webapi-2 Maj ...
- JavaWeb三大框架基础架构——CRUD的基础功能搭建
@ 目录 介绍 注意 applicationContext.xml mybatis-config.xml web.xml 结束语 介绍 项目前端采用了bootstrap,后端是ssm三大框架 注意 这 ...
随机推荐
- 总线接口与计算机通信(四)USB外部总线(初级认识)
USB简介 USB是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术.USB接口支持设备的即插 ...
- BZOJ 4143 The Lawyer
这道题看起来很吓人,但事实上看懂后会发现,其根本没有任何技术含量,做这道题其实要考虑的就是每天最早结束的一场的结束时间以及最晚开始的一场的开始时间,如果结束时间早于开始时间,那么OK就这 ...
- seajs + easyui [转]
* *content seajs+easyui使用 */ /** * 首先来看看在seajs中jquery和jquery插件如何使用 */ 1.jquery.js define(function(re ...
- 玩2k16
2k是我最喜欢的游戏啦,平时无聊了都会搞两盘.现在到2k16了,玩游戏时碰到一些麻烦,记录便查. 我哥一直说他的电脑玩2K16非常卡,根本玩不了,但是他的电脑配置可比我的高啊,我玩起溜溜地,喊他把配置 ...
- jquery 动态增加的html元素,初始化设置在id或class上的事件无效
一般情况,我们会在页面初始化完成后对class定义一些全局事件,举个栗子: $(document).ready(function(){ $(".class").on("m ...
- 深入浅出—JAVA(6)
6.认识JAVA的API Arraylist的操作
- Hadoop_Lucene
http://codelife.me/blog/2012/11/03/jackson-polymorphic-deserialization/ http://itindex.net/blog/2012 ...
- EAN-13 条码(又称GTIN-13 条码)
EAN全名为European Article Number(欧洲商品条码),在1977年时由欧洲几个主要工业国家共同发展出来的,后来变成国际商品条码系统.台湾在1985年加入EAN会员,现在我们买东西 ...
- QMessageBox 用法
案例一:QMessageBox msgBox;msgBox.setText("The document has been modified.");msgBox.setInforma ...
- WPF:使用Json.NET在TreeView中树形显示JSON数据
原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...