1. 程式人生 > >分散式技術 webapi 路由追加html、aspx、shtml 適用於 對接 安卓、IOS

分散式技術 webapi 路由追加html、aspx、shtml 適用於 對接 安卓、IOS

首先是這樣,在對接安卓和IOS或者是第三方呼叫的介面,我需要在服務端返回一個帶.html/.aspx這樣字尾的介面。

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

     技術分享

    當然,我們用的肯定是webapi 來做這件事情。不需要建aspx/html/do/shtml...這樣的檔案,只需要配置一下路由就可以了。

    首先要開啟:WebApiConfig 這個配置檔案。需要將

 routeTemplate: "api/{controller}/{action}/{Id}",

修改成:

如果要想是aspx,那麼就修改成

 routeTemplate: "api/{controller}/{action}.aspx",

如果要想是html,那麼就修改成

 routeTemplate: "api/{controller}/{action}.html",

修改完成程式碼如下:    

 public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}.html",
                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();
            //將webapi中的XmlFormatter 移除,預設就是以JsonFormatter作為其傳輸格式
            config.Formatters.Remove(config.Formatters.XmlFormatter);
        }
    }

webapi Controller程式碼:

namespace WebApiApp.Controllers
{
    public class UsersInfoController : ApiController
    {

        UsersInfo[] usersInfos = new UsersInfo[]
        {
            new UsersInfo{Id=1,Name="張三", Age=100, Email="[email protected]", Adress="北京"},
            new UsersInfo{Id=2,Name="李四", Age=222, Email="
[email protected]
", Adress="北京"}, new UsersInfo{Id=3,Name="王五", Age=333, Email="[email protected]", Adress="北京"}, new UsersInfo{Id=4,Name="侯六", Age=444, Email="[email protected]", 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>

全部程式碼如下:
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />   
  
    <handlers>
      <remove name="WebDAV"/> <!--PUT DELETE 放開-->
    </handlers>

  </system.webServer>

相關推薦

分散式技術 webapi 路由追加htmlaspxshtml 適用 對接 IOS

首先是這樣,在對接安卓和IOS或者是第三方呼叫的介面,我需要在服務端返回一個帶.html/.aspx這樣字尾的介面。     例子如下圖:http://localhost:64131/api/UsersInfo/GetAllUsersInfo.html      

轉:GitHub 排名前 100 的iOS項目簡介

mmd 翻頁 tla 程序 安裝使用 appledoc 檢測 fin 字體 排名完全是根據 GitHub 搜索 Java 語言選擇 (Best Match) 得到的結果, 然後過濾了跟 Android 不相關的項目, 所以排名並不具備任何官方效力, 僅供參考學習, 方便初學

IOS端AEC密鑰加密 Java端密鑰解密通用實現(16進制表現形式)

har adp illegal 包括 encrypted key fin tac 轉換成 由於業務需求,需要實現在客戶端對重要信息進行加密,在服務端進行解密。客戶端包括IOS和安卓的 服務端位Java。 註意密鑰 需要保持一致,可以自己定義 。 安卓端加密代碼: =

vue中根據手機類型判斷是微信或IOS跳轉相應下載頁面

nload tor js代碼 roi agen 按鈕 path his cati 按鈕:<div class="download" @click="downApp">立即下載</div> 遮罩層:<div class="dark" v-show

js 判斷通過什麼開啟(蘋果微信QQ瀏覽器某個app應用…)

/* 獲取當前環境: 系統環境: iOS Android PC 瀏覽器環境 微信內建瀏覽器、QQ內建瀏覽器、正常瀏覽器 是否app內開啟 */ var ua = navigator.userAgent.toLowerCase(); //獲取瀏覽器標識並轉換為小寫 va

手機端車牌識別系統(支援ios系統)

私家車的數量的急劇增長,既帶來了喜也同樣帶來悲。一方面給我們的生活帶來的了很多便利,另一方面也同樣帶來了交通擁堵、交通事故等問題。因為對於車輛的管理尤為重要! 比如說違章停車登記,傳統方法是:執法人員通過攜帶的數碼相機對違法停車的車輛拍照取證,然後手動輸入車牌號碼進行登記。 針對於這種違章停車的管理問題,

手機端車牌識別系統(支持ios系統)

技術分享 研發 手機端 -o 場景 分享圖片 號碼 blog 搜索 私家車的數量的急劇增長,既帶來了喜也同樣帶來悲。一方面給我們的生活帶來的了很多便利,另一方面也同樣帶來了交通擁堵、交通事故等問題。因為對於車輛的管理尤為重要! 比如說違章停車登記,傳統方法是:執法人員通過攜

Windows Live Writer離線部落格工具使用教程(適用部落格園CSDN51CTO等等部落格)

目前大部分的部落格作者在用Word寫部落格這件事情上都會遇到以下3個痛點: 1.所有部落格平臺關閉了文件釋出介面,使用者無法使用Word,Windows Live Writer等工具來發布部落格。使用Word寫部落格需要在第三方部落格平臺註冊帳號,且需要第三方部落格平臺提供API介面。目前的有的部落格平臺均已

Windows Live Writer離線博客工具使用教程(適用博客園CSDN51CTO等等博客)

可能 api接口 vertica tps 開啟 好的 希望 安裝插件 cor 目前大部分的博客作者在用Word寫博客這件事情上都會遇到以下3個痛點:1.所有博客平臺關閉了文檔發布接口,用戶無法使用Word,Windows Live Writer等工具來發布博客。使用Word

ios端移動端銀行卡識別

隨著移動互聯的飛速發展,第三方支付也隨之興起,那麼在最初,繫結銀行卡都是純手工錄入的方式,時間長,易出錯,客戶還表現出極大的不滿,運營成本很高。為了解決這個問題,ocr廠商付出了心力,終於研製了Android、ios手機移動端銀行卡識別。 Android、ios手機移動端銀行卡識別完全顛覆了手工錄入的方式,

世爵娛樂手機端(蘋果)怎麼下載?

世爵娛樂手機端(安卓、蘋果)下載,這是世爵平臺專為手機使用者推出的服務。隨著時代的發展和科技的進步,現在人人都是手機不離手的,“低頭族”這個詞也就出現了。如果你覺得沒什麼樂趣,你可以下載世爵娛樂手機版的讓你生活帶來樂趣! 世爵平臺提供世爵平臺同時為客戶提供即時、刺激、高信譽

vue實現與IOS互動

方案背景 IOS用的是jsBridge外掛實現呼叫、傳參、回撥的 安卓是在window掛載方法和掛載回撥的 IOS實現方案 呼叫原生方法封裝如下 function setupWebViewJavascriptBridge (callback) { if (window.W

Unity 截圖功能(IOS

我們在一些專案中可能需要截圖儲存功能(特別是AR的一些專案),將截下來的圖儲存的相簿中,從而實現分享功能。下面就Android和IOS說一下他們是如何將圖片儲存到本地圖冊的。 關於安卓端,儲存到相簿方法很簡單,就是也路徑的問題,具體方法如下: public class

C#.架構設計(三)MVVM架構模式(用在WPF或Silverlight)MVC架構模式(用在java開發)MVP架構模式(用在開發)的原理與區別

轉發https://blog.csdn.net/victoryzn/article/details/78392128 本文將詳細闡述以下MVC、MVP、MVVM三種理念的定義及區別還有他們的適用場合。 MVC MVC模式最初生根於伺服器端的Web開發,後來漸漸能夠勝任客戶端Web開發,能

蘋果手機備忘錄同步

安卓、蘋果的備忘錄互不相通,安卓的備忘錄叫記事本。你有兩隻手機,怎麼樣把安卓和蘋果手機的備忘錄同步起來了?現在有了一個安卓的APP,用安卓上的豌豆莢去收索“備忘錄”,排在第一的那個,下載量9.7萬,9

Unity 儲存圖片到手機相簿(蘋果)

首先說一下安卓:首先在相簿裡建立一個檔案,然後將圖片存入。 程式碼: using UnityEngine; using System.Collections; using System.IO; public class SavaPicture : MonoBehaviou

【專案實戰】——Java根據獎品權重計算中獎概率實現抽獎(適用砸金蛋大轉盤等抽獎活動)

  雙蛋節(聖誕+元旦)剛剛過去,前幾天專案上線的砸金蛋活動也圓滿結束。       現在在許多網站上都會有抽獎的活動,抽獎的演算法也是多種多樣,這裡介紹一下如何根據每種獎品的權重來抽獎,適用於

TC Games問題解答:連線卡頓控制視角解決方法,無需模擬器玩手機遊戲

tcgames滑鼠如何控制視角?tcgames連線不上手機怎麼辦?tcgames延遲卡頓怎麼辦?tcgames是一款無需安卓模擬器也可以流暢地在電腦上玩手機遊戲的工具。通過將手機安卓或平板高清投屏到電腦之後,用電腦鍵盤滑鼠操控手機遊戲,WASD搖桿功能,可控制遊戲前後左右走位

Java 獲取當天星期幾

安卓、Java中獲取當天是星期幾,非常方便實用的一個方法 /*獲取星期幾*/ public static String getWeek() { Calendar cal = Calendar.getInstance(); i

Visual Studio 2017最新版正式釋出!適用任何開發人員平臺及APP

適用於任何開發人員、APP及任何平臺的Visual Studio 2017 新功能介紹。 快速生成更智慧的應用 實時依賴項驗證等新功能有助於推動早期開發過程中的 DevOps。 此外,無論使用哪種語言或平臺,對熱門功能的增強改進(例如程式碼導航、IntelliSense