zoukankan      html  css  js  c++  java
  • WebAI入门

    1、创建一个WebAPI

    在这章中,你将使用asp.net web Api 创建一个WebApi 并返回一个产品列表。前段网页使用JQuery显示结果。
    启动Visual Studio 并新建项目。在“模板”窗格中,选择“已安装的模板”并展开Visual C#节点。 在Visual C#下,选择Web。 在项目模板列表中,选择ASP.NET Web应用程序。 将项目命名为“ProductsApp”,然后单击“确定”。

    在asp.net Project 新对话框中,选择Empty模板。

    注意:你可以使用Web Api模板创建一个Web API项目。WebAPI模板使用了ASP.NET MVC提供API帮助页面。本教程将使用空模板,因为我想显示没有MVC的Web API.一般来说,你不需要知道ASP.NET MVC使用了WebAPI.

    2、添加一个Model

    模型是表示应用程序中的数据的对象。ASP.NET Web API可以自动将你的模型序列化成JSON、XML或者其他格式,然后将序列化数据写入HTTP响应消息的正文。只要客户端可以读取到序列化的格式,它可以反序列化对象。大多数客户端可以解析XML和JSON。因此,客户端可以通过在HTTP请求消息中设置Accept头来只是所需要的格式
    我们先来创建一个代表产品的简单模型。

    名字是Product. 为Product类添加下列属性。

    namespace ProductsApp.Models
    {
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Category { get; set; }
            public decimal Price { get; set; }
    
        }
    }
    


    在Web API中,控制器是处理HTTP请求的对象。我们将添加一个控制器,可以返回产品列表活由ID指定的单个产品。

    如果你使用ASP.NET MVC ,你已经熟悉了控制器。Web API控制器与MVC控制器类似,但继承了APIController类而不是Controller类。

    在解决方案中选择一个Controllers文件夹选择右击并添加Controller ,在弹出的脚手架对话框,选择Web API Controller-Empty 点击添加。

    打开这个文件,用下列代码替换

    using ProductsApp.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Web.Http;
    
    namespace ProductsApp.Controllers
    {
        public class ProductsController : ApiController
        {
            Product[] products = new Product[] 
            { 
                new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
                new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
                new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
            };
    
            public IEnumerable<Product> GetAllProducts()
            {
                return products;
            }
    
            public IHttpActionResult GetProduct(int id)
            {
                var product = products.FirstOrDefault((p) => p.Id == id);
                if (product == null)
                {
                    return NotFound();
                }
                return Ok(product);
            }
        }
    }
    

     


    控制器定义了返回产品的两种方式:

    控制器定义了返回产品的两种方法:
    •GetAllProducts方法以IEnumerable <Product>类型的形式返回整个产品列表。
    •GetProduct方法通过其ID来查找单个产品。

    你的webapi可以工作额,控制器上的每个方法对应一个和多个URL:

    Controller MethodURI
    GetAllProducts /api/products
    GetProduct /api/products/id


    对于GetProduct方法,URI中的id是占位符。 例如,要获得ID为5的产品,URI为api/products/5


    4、调用webapi使用javascript和JQuery

       在本章中,我们将添加一个使用AJAX调用的WebAPI的HTML页面。我们使用JQUERT进行AJAX调用,而且还可以进行结果更新页面。在解决方案中添加下面html页面

      

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Product App</title>
    </head>
    <body>
    
      <div>
        <h2>All Products</h2>
        <ul id="products" />
      </div>
      <div>
        <h2>Search by ID</h2>
        <input type="text" id="prodId" size="5" />
        <input type="button" value="Search" onclick="find();" />
        <p id="product" />
      </div>
    
      <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
      <script>
        var uri = 'api/products';
    
        $(document).ready(function () {
          // Send an AJAX request
          $.getJSON(uri)
              .done(function (data) {
                // On success, 'data' contains a list of products.
                $.each(data, function (key, item) {
                  // Add a list item for the product.
                  $('<li>', { text: formatItem(item) }).appendTo($('#products'));
                });
              });
        });
    
        function formatItem(item) {
          return item.Name + ': $' + item.Price;
        }
    
        function find() {
          var id = $('#prodId').val();
          $.getJSON(uri + '/' + id)
              .done(function (data) {
                $('#product').text(formatItem(data));
              })
              .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
              });
        }
      </script>
    </body>
    </html>
    

      

       4.1 获取产品列表

           获取产品列表,发送HTTP GET请求到"/api/products". JQuery getJSON函数发送一个Ajax请求。对于响应包含JSON对象的数组。done函数指定如果成功,则调用该函数。
    在回调中,我们使用产品信息更新DOM对象。

        $(document).ready(function () {
        // Send an AJAX request
        $.getJSON(apiUrl)
            .done(function (data) {
                // On success, 'data' contains a list of products.
                $.each(data, function (key, item) {
                    // Add a list item for the product.
                    $('<li>', { text: formatItem(item) }).appendTo($('#products'));
                });
            });
    });
    

      4.2 根据ID获取指定产品

              要通过ID获取产品,请将HTTP GET请求发送到“/api/products/id”,其中id是产品ID。我们仍然调用getJSON发送AJAX请求,但是这次我们把ID放在请求URI中。 此请求的响应是单个产品的JSON表示。
               

     function find() {
        var id = $('#prodId').val();
        $.getJSON(apiUrl + '/' + id)
            .done(function (data) {
                $('#product').text(formatItem(data));
            })
            .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
            });
    	}
    

    到此为止一个简单的API完成了,并通过客户端调用实现数据的展示。

    我们运行应用程序:

  • 相关阅读:
    《ACM国际大学生程序设计竞赛题解I》——6.8
    数据结构篇
    从SG函数浅谈解决博弈问题的通法
    动态规划的泛式解题思路
    bzoj1057: [ZJOI2007]棋盘制作
    bzoj3884: 上帝与集合的正确用法
    bzoj1564: [NOI2009]二叉查找树
    bzoj4347: [POI2016]Nim z utrudnieniem
    bzoj1131: [POI2008]Sta
    bzoj1566: [NOI2009]管道取珠
  • 原文地址:https://www.cnblogs.com/netcoder/p/7670617.html
Copyright © 2011-2022 走看看