您的位置:首页 > 编程语言 > ASP

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

2017-09-06 16:59 399 查看
首先是这样,在对接安卓和IOS或者是第三方调用的接口,我需要在服务端返回一个带.html/.aspx这样后缀的接口。

例子如下图:http://localhost:64131/api/UsersInfo/GetAllUsersInfo.html

namespace WebApiApp.Controllers
{
public class UsersInfoController : ApiController
{

UsersInfo[] usersInfos = new UsersInfo[]
{
new UsersInfo{Id=1,Name="张三", Age=100, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=2,Name="李四", Age=222, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=3,Name="王五", Age=333, Email="abcd@126.com", Adress="北京"},
new UsersInfo{Id=4,Name="侯六", Age=444, Email="abcd@126.com", Adress="北京"}
};

/// <summary>
/// /api/Contact
/// </summary>
/// <returns></returns>
public IEnumerable<UsersInfo> GetListAll()
{
return usersInfos;
}

/// <summary>
/// 获取全部数据
/// </summary>
/// <returns></returns>
public ReturnJson GetAllUsersInfo()
{
return new ReturnJson { data = usersInfos };
}

/// <summary>
/// 根据Id 获取数据
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public UsersInfo GetUsersInfoById(int Id,[FromBody]string value )
{
var usersInfo = usersInfos.FirstOrDefault((u) => u.Id == Id);
return usersInfo;
}

public class ReturnJson
{
public int count { get; set; }
public object data { get; set; }
public string msg { get; set; }
}
}
}


View Code

新建一个html页面,供测试使用:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

</head>

<body>
<div>
<h3>所有用户</h3>

<ul id="usersinfos">
<script type="html/javascript" id="js:usersinfos">
{{each data as list i}}
<li> Id:{{list.Id}} , Name:{{list.Name}},Age:{{list.Age}},Email: {{list.Email}},Adress:{{list.Adress}}</li>
{{/each}}
</script>
</ul>

</div>
<div>
<h3>查询</h3>
<input type="text" id="Id" size="15" />
<input type="button" value="查询" onclick="GetUsersInfoById() " />
<ul id="usersinfo"></ul>
</div>

<script src="Scripts/jquery-1.8.3.min.js"></script>
<script src="Scripts/template.js"></script>
<script src="Scripts/mui.min.js"></script>
<script src="Scripts/app.js"></script>
<script type="text/javascript">
var url_api = 'api/UsersInfo/';

$(function () {
GetAllUsersInfo();
})

function GetAllUsersInfo() {
var strli = "";
$.ajax({
type: 'GET',
url: 'api/UsersInfo/GetAllUsersInfo.html',
async: true,//同步
dataType: 'json',
success: function (data) {
var jsondata = data.data;
var list_html = template('js:usersinfos', data);
$('#usersinfos').append(list_html);

//$.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: 'api/UsersInfo/GetUsersInfoById.html',
async: true,//同步
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>


报文:







PS:如果http://localhost:64131/api/UsersInfo/GetAllUsersInfo.html 报404,往下看↓

1.MVC4 版本以上 不支持 直接在路由中配置.html/.aspx/.shtml

我们需要在webconfig中配置一下

<modules runAllManagedModulesForAllRequests="true" /> :

2.如果用到了 webapi 中的put 、delete 等rest操作,需要配置一下

  <handlers>
<remove name="WebDAV"/> <!--PUT DELETE 放开-->
</handlers>

全部[b]代码如下:[/b]


<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />

<handlers>
<remove name="WebDAV"/> <!--PUT DELETE 放开-->
</handlers>

</system.webServer>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: