學習篇一:Web API

weixin_33978044發表於2017-09-10

第一章:初識

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.
參照網址:
在Web Api中強制使用Https

1.1 入門例項

1.1.1 建立MVC專案,HelloWebAPI
2789632-15dc086c9d9c66bd.png

2789632-3530a9dcaee13370.png
1.1.2 新增一個Model,product.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HelloWebAPI.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}
1.1.3 新增一個controller
2789632-1a9348086cce459d.png
using HelloWebAPI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;

namespace HelloWebAPI.Controllers
{
    public class ProductsController : ApiController
    {
        //
        // GET: /Products/

        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 Product GetProductById(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return product;
        }
        public IEnumerable<Product> GetProductsByCategory(string category)
        {
            return products.Where(
                (p) => string.Equals(p.Category, category,
                    StringComparison.OrdinalIgnoreCase));
        }

    }
}
2789632-58d90d5abb291941.png

1.2 知識點整理

1.2.1 如何修改請求方式

我們可以看到在Action 中沒有使用[HttpGet]、[HttpPost] 等修飾,那究竟它是如何運作的呢?
  Action 皆以HTTP 動詞開頭Get、Post、Put、Delete ,這個也是剛好符合 webapi的約定的。
  你呼叫什麼型別的方法 ,例如 post 方法,那麼他就去 你的所有的 action 裡面 去找 以 post 開頭的方法 ,名字可以隨便叫,例如 postToDataBase 等等,只要開頭匹配 就可以了
例如:在上面的例子中:

public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

當改成PostAllProducts時,則以Post的請求方式。


2789632-a467b8c854e05311.gif

方法名雖然帶Get,Post,但是在請求的的時候並不用加上。
有幾種標準的請求,如get,post,put,delete等,它們分別對應的幾個操作,下面講一下:

  • GET:生到資料列表(預設),或者得到一條實體資料
  • POST:新增服務端新增一條記錄,記錄實體為Form物件
  • PUT:新增或修改服務端的一條記錄,記錄實體的Form物件,記錄主鍵以GET方式進行傳輸
  • DELETE:刪除 服務端的一條記錄
1.2.2 如何傳遞引數?
2789632-0d6b91a74c3796ee.png

在方法裡直接新增引數,然後執行那程式,可以看到:


2789632-c71f70dbaee7cf43.png

2789632-159d070a9432af2c.png

當然這裡的1,2並沒有實際意義。再看看傳遞一個實體看看:


2789632-5097dc63d978639e.png

2789632-62fb84d187b4ae79.png

原來的檔案:(由於裡面存在一些不必要的東西,試試刪除一些,簡化一點)
2789632-c4237698e38fcf30.png

修改後的檔案結構:(不喜歡啟動時什麼都沒有,新增了一個index.html,修改下路由配置)
2789632-6aa161c68c53bc5d.png

啟動:


2789632-76f3e27162d0fce5.png

資料介面暫時告一段落,然後接下來學習EF 的code first的學習……

相關文章