分布式技术 webapi
webapi可以返回json、xml类型的数据,对于数据的增、删、改、成,提供对应的资源操作,按照请求的类型进行相应的处理,主要包括 Get(查)、Post(增)、Put(改)、Delete(删),这些都是HTTP协议支持的请求方式。
webapi 的请求方式:根据路由规则请求。
webservice和webapi两种web服务的比较:
webservice :基于SOAP风格的网络服务,使用方法进行请求。
webapi:基于REST 风格的网络服务、使用资源进行请求。
webapi中5个方法分别是查单个、查所有、增加、修改、删除。
微软有了webservice和wcf,为什么还要有webapi?
用过wcf的人应该都知道,面对一大堆复杂的配置文件,万一出了问题,真的会叫人抓狂,而且提供不同的客户端调用也不是很方便。不得不承认wcf的功能确实非常强大,可是有时候我们通常不需要那么多复杂的功能,只需要简单的仅通过使用HTTP或HTTPS来调用的增、删、改、查功能。webapi诞生...那么什么时候考虑使用webapi?
1.需要webservice但不需要SOAP。
2.需要在已有的wcf服务基础上建立non-soap-based http 服务。
3.只想发布一些简单的HTTP服务,不想使用相对复杂的wcf配置。
4.发布服务可能会被带宽受限的设备访问
5.希望使用开源框架,关键时候可以自己调试或自定义一下框架
webapi 使用
一、创建webapi
(1)新建项目->web->ASP.NET MVC Web 应用程序->命名为WebApiApp,在项目模板中选中“WebApi”。

(2)在Models目录中新建类UsersInfo。
namespace WebApiApp.Models
{
public class UsersInfo
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public string Adress { get; set; }
}
}
(3)新建API控制器UsersInfoController,右击目录Controllers,选择“添加->控制器”。和普通控制器不一样的地方是这里要继承ApiController,而不是Controller.
namespace WebApiApp.Controllers
{
public class UsersInfoController : ApiController
{ UsersInfo[] usersInfos = new UsersInfo[]
{
new UsersInfo{Id=,Name="张三", Age=, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=,Name="李四", Age=, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=,Name="王五", Age=, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=,Name="侯六", Age=, Email="abcd@126.com", Adress="北京"}
}; /// <summary>
/// 获取全部数据
/// </summary>
/// <returns></returns>
public IEnumerable<UsersInfo> GetAllUsersInfo()
{
return usersInfos;
} /// <summary>
/// 根据Id 获取数据
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public UsersInfo GetUsersInfoById(int Id)
{
var usersInfo = usersInfos.FirstOrDefault((u) => u.Id == Id);
return usersInfo;
} }
}
二、调用WebAPI
WebAPI有两种调用方式。
1、调用方式1:jQuery的Ajax
指定请求的数据类型(contentType):“application/json:charset=utf-8”。
主要属性如下:
a、type:请求方式,包括get、post、put、delete
b、url:请求资源,根据路由规则编写
c、data:请求数据,为json格式
d、contentType:请求数据的类型及编码
e、dataType:返回的数据类型,可以是text、json
f、success:成功处理的回调函数
g、error:失败处理的回调函数
h、async:true同步,false异步
提示:使用js的异步操作不支持跨域访问,也就是说js异步调用操作必须和webapi在同一个站点上。
(1) 新增一个UsersInfo.html来测试WebAPI的调用,代码如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="Scripts/jquery-1.8.3.min.js"></script>
</head> <body>
<div>
<h3>所有用户</h3>
<ul id="usersinfos"></ul> </div>
<div>
<h3>查询</h3>
<input type="text" id="Id" size="15" />
<input type="button" value="查询" onclick="GetUsersInfoById() " />
<ul id="usersinfo"></ul>
</div> <script type="text/javascript">
var url_api = 'api/UsersInfo/'; $(function () {
GetAllUsersInfo(); }) function GetAllUsersInfo() {
var strli = "";
$.ajax({
type: 'GET',
url: url_api,
async: false,//同步
dataType: 'json',
success: function (json) { $.each(json, function (i, n) {
strli += "<li>";
strli += 'Id:' + n.Id + ',' + 'Name:' + n.Name + ',' + 'Age:' + n.Age + ',' + 'Email:' + n.Email + ',' + 'Adress:' + n.Adress + '';
strli += '</li>';
}) $("#usersinfos").html(strli); },
error: function (xhr, status, error) {
alert("操作失败");
}
});
} function GetUsersInfoById() {
var strli_ById = "";
var Id = $('#Id').val();
$.ajax({
type: 'GET',
url: url_api,
async: false,//同步
dataType: 'json',
data: { 'Id': Id },
success: function (json) { strli_ById += "<li>";
strli_ById += 'Id:' + json.Id + ',' + 'Name:' + json.Name + ',' + 'Age:' + json.Age + ',' + 'Email:' + json.Email + ',' + 'Adress:' + json.Adress + '';
strli_ById += '</li>'; $("#usersinfo").html(strli_ById); },
error: function (xhr, status, error) {
alert("操作失败");
}
});
} </script>
</body>
</html>
(2) 先运行WebApiApp项目,然后浏览UsersInfo.html,结果如下:

分布式技术 webapi的更多相关文章
- 分布式技术 webapi 路由追加html、aspx、shtml 适用于 对接 安卓、IOS
首先是这样,在对接安卓和IOS或者是第三方调用的接口,我需要在服务端返回一个带.html/.aspx这样后缀的接口. 例子如下图:http://localhost:64131/api/UsersInf ...
- .Net 分布式技术比较
内容转自于 http://www.mamicode.com/info-detail-585547.html .NET 分布式技术比较 1. MSMQ(Microsoft Message Queue) ...
- Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务
一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2 应用服务和数据服务拆分 特点:App.DB.Fi ...
- 搞懂分布式技术21:浅谈分布式消息技术 Kafka
搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topi ...
- 搞懂分布式技术28:微服务(Microservice)那点事
搞懂分布式技术28:微服务(Microservice)那点事 微服务(Microservice)那点事 肥侠 2016-01-13 09:46:53 浏览58371 评论15 分布式系统与计算 微服务 ...
- 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocke ...
- 搞懂分布式技术11:分布式session解决方案与一致性hash
搞懂分布式技术11:分布式session解决方案与一致性hash session一致性架构设计实践 原创: 58沈剑 架构师之路 2017-05-18 一.缘起 什么是session? 服务器为每个用 ...
- 搞懂分布式技术12:分布式ID生成方案
搞懂分布式技术12:分布式ID生成方案 ## 转自: 58沈剑 架构师之路 2017-06-25 一.需求缘起 几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-i ...
- 搞懂分布式技术9:Nginx负载均衡原理与实践
搞懂分布式技术9:Nginx负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容, ...
随机推荐
- android应用安全——代码安全(android代码混淆)
android2.3的SDK开始在eclipse中支持代码混淆功能(理论上java都支持混淆,但关键在于如何编写proguard的混淆脚本,2.3的SDK使用简单的配置就可以实现混淆).使用SDK2. ...
- 【BZOJ4145】[AMPPZ2014]The Prices 状压DP
[BZOJ4145][AMPPZ2014]The Prices Description 你要购买m种物品各一件,一共有n家商店,你到第i家商店的路费为d[i],在第i家商店购买第j种物品的费用为c[i ...
- 【BZOJ4259】残缺的字符串 FFT
[BZOJ4259]残缺的字符串 Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时, ...
- javamail+postfix发送邮件
由于在做项目时,需要用到邮箱服务.但是不想使用163,qq的,所以就自己搭一个邮箱服务器. 在搜索资料发现postfix是个不错的选择,于是就开始配置了. 这是我搜到的最全的的教程了:http://w ...
- Word Formation
构词 Word Formation 1.派生Derivation 2.合成Compounding 3.截短Clipping 4.混合Blending 1派生Derivation 1).前缀 除少数英语 ...
- join-case
SELECT trd.* ,(CASE WHEN ta.AccountID IS null THEN '' ELSE ta.AccountID END ) FROM traceroleid trd L ...
- elastic search使用
elastic使用 使用python时注意保持一个好习惯:不要使用类似str.type这样的变量名,很容易引发错误: https://blog.csdn.net/lifelegendc/article ...
- 洛谷 P2467 [SDOI2010]地精部落
洛谷 我讲的应该没有这个[https://www.luogu.org/blog/user55639/solution-p2467]清楚. 贴个代码算了: #include <bits/stdc+ ...
- 笔记-django学习链接
form表单学习 https://www.cnblogs.com/weiman3389/p/6225075.html python字符串replace()方法 https://www.cnblogs. ...
- PHP的几种排序方法
<?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PH ...