初始WebApi(1)

来源:https://www.cnblogs.com/hcyesdo/archive/2020/04/14/12700249.html
-Advertisement-
Play Games

如果你要問我WebApi是幹嘛,我只能說它是的給數據。哈哈哈哈哈,這幾天也才剛剛瞭解瞭解關於WebApi的知識,今天就來談談吧。 1.創建WebApi項目 第一步:選擇ASP.NET Web應用程式 第二步:選擇WebApi,記得要取消勾選Https配置,點擊創建 第三步:創建完成後形成的項目結構 ...


如果你要問我WebApi是幹嘛,我只能說它是的給數據。哈哈哈哈哈,這幾天也才剛剛瞭解瞭解關於WebApi的知識,今天就來談談吧。

1.創建WebApi項目

第一步:選擇ASP.NET Web應用程式

第二步:選擇WebApi,記得要取消勾選Https配置,點擊創建

 第三步:創建完成後形成的項目結構

這裡和ASP.NET MVC的目錄結構看起來有點類似,其實還是有很大的不同的

在這裡View視圖其實不起什麼作用。

下麵來看看目錄結構中有什麼東西。

 可以看到自動創建了兩個控制器分別是Home和Values(這裡的Student和User是我自己創建的)

進去看看。需要註意的是這裡Home和下麵介紹的Values是不同的控制器,哪裡不同呢?等一下就知道啦

Home控制器:

Values控制器:

與Home控制器最大的區別就在於繼承的控制器前者是Controller、後者是ApiController

可以看到這裡分別有幾個方法:Get(查詢)、Post(新增)、Put(修改)、以及Delete(刪除)

[FromBody]在這裡的作用就是只接受從data中傳遞過來的參數,也就是其他傳參方法比如QueryString形式的方法無法獲取。

為什麼系統自動幫我們創建了這四個方法呢?

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Net;
 5 using System.Net.Http;
 6 using System.Web.Http;
 7 
 8 namespace Demo.Controllers
 9 {
10     //WebAPI控制器
11     public class ValuesController : ApiController
12     {
13         // GET api/values
14         public IEnumerable<string> Get()
15         {
16             return new string[] { "value1", "value2" };
17         }
18 
19         // GET api/values/5
20         public string Get(int id)
21         {
22             return "value";
23         }
24 
25         // POST api/values
26         public void Post([FromBody]string value)
27         {
28         }
29         //FromBody指定數據來源必須是data中的數據而不是從QueryString過來的
30         // PUT api/values/5
31         public void Put(int id, [FromBody]string value)
32         {
33         }
34 
35         // DELETE api/values/5
36         public void Delete(int id)
37         {
38         }
39     }
40 }

這裡的原有還有追溯到創建WebApi項目的時候

那就是RESTful HTTP服務模板

通過RESTful語義定義的四個方法,可以通過ajax請求進行調用並獲得數據。

 下麵我們去創建一個普通的Html頁面和一個Student Api控制器以及一個Student類

Student類:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace Demo.Models
 7 {
 8     public class Student
 9     {
10         public int Id { get; set; }
11         public string Name { get; set; }
12     }
13 }

Student控制器方法:

在註釋中我也備註了RESTful使用規則和約束

 1 using Demo.Models;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Net;
 6 using System.Net.Http;
 7 using System.Web.Http;
 8 
 9 namespace Demo.Controllers
10 {
11     //WebAPI控制器
12     public class StudentController : ApiController
13     {
14         /// <summary>
15         /// Restful格式的數據提供方式 方法名要帶著Get
16         /// Restful風格節省了方法名的編寫,但是不適合~Login登錄、上傳 、修改頭像、點贊等業務功能的實現
17         /// Restful只適合對某一個表的增刪改查
18         /// </summary>
19         /// <returns></returns>
20         public Student Get()
21         {
22             return new Student() { Id = 1, Name = "黃朝" };
23         }
24         /// <summary>
25         ///Get不能省略
26         /// </summary>
27         /// <param name="name"></param>
28         /// <returns></returns>
29         public string Get(string name)
30         {
31             return "參數是:" + name;
32         }
33 
34         public string GetAddress(string addname) {
35             return "地址參數是:" + addname;
36         }
37         /// <summary>
38         /// 在這裡post是做新增操作
39         /// </summary>
40         /// <param name="stu">學生對象</param>
41         public void Post(Student stu)
42         { 
43             
44         }
45         /// <summary>
46         /// 修改操作
47         /// </summary>
48         /// <param name="id">修改的id</param>
49         /// <param name="stu">修改的對象</param>
50         public void Put(int id,Student stu)
51         { 
52             
53         }
54         /// <summary>
55         /// 刪除
56         /// </summary>
57         /// <param name="id">根據id的刪除</param>
58         public void Delete(int id)
59         { 
60             
61 
62         }
63     }
64 }

Html頁:

根據type不同的參數,調用後臺Api的數據。可以作為對象參數傳遞也可以根據id作為參數傳遞

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="Scripts/jquery-3.3.1.js"></script>
    <script>
        $.ajax({
            url: "/api/Student",
            type: "get"
        }).done(function (data) { console.log(data) })

        //$.ajax({
        //    url: "/api/Student",
        //    type: "post",
        //    data: {
        //        ID: 1,
        //        Name:"abc"
        //    }
        //}).done(function () {
        //    console.info("成功");
        //}).fail(function () {
        //    console.info("失敗");
        //})

        ///api/Student/1 1為Id
        //$.ajax({
        //    url: "/api/Student/1",
        //    type: "put",
        //    data: {
        //        ID: 12,
        //        Name:"lisi"
        //    }
        //}).done(function () {
        //    console.info("成功")
        //}).fail(function () {
        //    console.info("失敗")
        //})

        //$.ajax({
        //    url:"/api/Student/1"
        //    type: "delete"
        //}).done(function () {rl: "/api/Student/1",
        //    console.info("成功")
        //}).fail(function () {
        //    console.info("失敗")
        //})
</script>
</head>
<body>
        
</body>
</html>

以上就是我對初次瞭解WebApi的一個學習總結,如果以上內容存在不足或錯誤代碼,請指出,謝謝。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 美團java一面問題 自我介紹 項目相關 線程與進程的區別 進程線程間的通信方式 hashmap與concurrenthashmap的區別 資料庫的事務 資料庫索引有哪些 大文件統計每個字元串的詞頻 有什麼想問的 一面面完之後面試官讓我回去等通知,一度以為掛了,沒想到出門沒有一個小時收到了美團2面的 ...
  • 前言 雖說已經工作,並且也做了兩個項目,但總覺得自己的基礎知識不牢固,所以從頭開始學起。學習過程中的一些代碼已上傳到 "Github" 和 "碼雲" 基礎知識 認識 PHP 略。。。 安裝與配置 略。。。 語言基礎 標記風格 XML 風格 腳本風格 簡短風格 ASP 風格 如果使用簡短風格和 ASP ...
  • 通俗理解spring源碼(二)—— 資源定位與載入 最開始學習spring的時候,一般都是這樣用: ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); User user = (User)con ...
  • 1. 前言 首先自我介紹一下,我是一個做 Java 的開發人員,從今年下半年開始,一直在各大技術博客網站發表自己的一些技術文章,差不多有幾個月了,之前在 cnblog 博客園加了網站統計代碼,看到每天的訪問量逐漸多了起來,國慶正好事情不多,就想著寫一個爬蟲,看下具體閱讀量增加了多少,這也就成了本文的 ...
  • 這篇文章是關於我的GBA庫lib_hl中數學庫的定點數部分。 定點數是什麼?為什麼要用定點數? 在之前的文章中,我已經介紹了GBA的硬體,它的CPU竟然居然理所當然沒有浮點數運算單元! 我要寫的是光線追蹤程式,基本上都在做精確的數學運算,而這個CPU卻連浮點數都不支持,那不是沒得玩? 當然是有方法的 ...
  • 整理docker中常用的命令,方便大家學習和命令查詢。最後分享一個.NET Core docker部署的示例 ...
  • 在這篇文章中,我將通過一個示例,來講解ASP.NET Core中的請求處理管道。在這篇文章中,我們將討論下麵幾個點:理解ASP.NET Core請求處理管道怎樣在ASP.NET中創建並註冊多個中間件組件?請求管道中,中間件執行的順序是咋樣的?理解ASP.NET Core請求處理管道為了理解ASP.N... ...
  • 在netcore開發中,最常見的就是註入,比如想獲取appsettings.json的內容,我們就需要去註入,然後在controller裡面去獲取,但是我們如果想要在service中使用appsettings.json的內容,這樣就是一個問題,並且每個controller去註入也是非常麻煩的事情 下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...