分布式技術 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=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>
        /// 獲取全部數據
        /// </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,結果如下:

 

 

 

 

 

 

 

 

 

   

    

 

  

 

 

 

 

 

 

                                                                                                                                                          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM