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的更多相关文章

  1. 分布式技术 webapi 路由追加html、aspx、shtml 适用于 对接 安卓、IOS

    首先是这样,在对接安卓和IOS或者是第三方调用的接口,我需要在服务端返回一个带.html/.aspx这样后缀的接口. 例子如下图:http://localhost:64131/api/UsersInf ...

  2. .Net 分布式技术比较

    内容转自于 http://www.mamicode.com/info-detail-585547.html .NET 分布式技术比较 1. MSMQ(Microsoft Message Queue) ...

  3. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

  4. 搞懂分布式技术21:浅谈分布式消息技术 Kafka

    搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topi ...

  5. 搞懂分布式技术28:微服务(Microservice)那点事

    搞懂分布式技术28:微服务(Microservice)那点事 微服务(Microservice)那点事 肥侠 2016-01-13 09:46:53 浏览58371 评论15 分布式系统与计算 微服务 ...

  6. 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务

    搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocke ...

  7. 搞懂分布式技术11:分布式session解决方案与一致性hash

    搞懂分布式技术11:分布式session解决方案与一致性hash session一致性架构设计实践 原创: 58沈剑 架构师之路 2017-05-18 一.缘起 什么是session? 服务器为每个用 ...

  8. 搞懂分布式技术12:分布式ID生成方案

    搞懂分布式技术12:分布式ID生成方案 ## 转自: 58沈剑 架构师之路 2017-06-25 一.需求缘起 几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-i ...

  9. 搞懂分布式技术9:Nginx负载均衡原理与实践

    搞懂分布式技术9:Nginx负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容, ...

随机推荐

  1. android应用安全——代码安全(android代码混淆)

    android2.3的SDK开始在eclipse中支持代码混淆功能(理论上java都支持混淆,但关键在于如何编写proguard的混淆脚本,2.3的SDK使用简单的配置就可以实现混淆).使用SDK2. ...

  2. 【BZOJ4145】[AMPPZ2014]The Prices 状压DP

    [BZOJ4145][AMPPZ2014]The Prices Description 你要购买m种物品各一件,一共有n家商店,你到第i家商店的路费为d[i],在第i家商店购买第j种物品的费用为c[i ...

  3. 【BZOJ4259】残缺的字符串 FFT

    [BZOJ4259]残缺的字符串 Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时, ...

  4. javamail+postfix发送邮件

    由于在做项目时,需要用到邮箱服务.但是不想使用163,qq的,所以就自己搭一个邮箱服务器. 在搜索资料发现postfix是个不错的选择,于是就开始配置了. 这是我搜到的最全的的教程了:http://w ...

  5. Word Formation

    构词 Word Formation 1.派生Derivation 2.合成Compounding 3.截短Clipping 4.混合Blending 1派生Derivation 1).前缀 除少数英语 ...

  6. join-case

    SELECT trd.* ,(CASE WHEN ta.AccountID IS null THEN '' ELSE ta.AccountID END ) FROM traceroleid trd L ...

  7. elastic search使用

    elastic使用 使用python时注意保持一个好习惯:不要使用类似str.type这样的变量名,很容易引发错误: https://blog.csdn.net/lifelegendc/article ...

  8. 洛谷 P2467 [SDOI2010]地精部落

    洛谷 我讲的应该没有这个[https://www.luogu.org/blog/user55639/solution-p2467]清楚. 贴个代码算了: #include <bits/stdc+ ...

  9. 笔记-django学习链接

    form表单学习 https://www.cnblogs.com/weiman3389/p/6225075.html python字符串replace()方法 https://www.cnblogs. ...

  10. PHP的几种排序方法

    <?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PH ...