新建 ASP.NET Core Web API 項目 -- RESTFul 風格 Hello World!

来源:http://www.cnblogs.com/Meng-NET/archive/2016/09/22/5895558.html
-Advertisement-
Play Games

一.創建一個空項目 請查看 新建 .NET Core 項目 -- Hello World! 一節,新建一個項目: 二.添加引用並修改配置為 Web API (.NET Core 已將 MVC/Web API 底層代碼及表層編程介面合二為一) 修改 .vscode\launch.json 文件 代碼如 ...


一.創建一個空項目

  請查看 新建 .NET Core 項目 -- Hello World! 一節,新建一個項目:              

二.添加引用並修改配置為 Web API (.NET Core 已將 MVC/Web API 底層代碼及表層編程介面合二為一)

   修改 .vscode\launch.json 文件  

  

  代碼如下:  

 1 {
 2     "version": "0.2.0",
 3     "configurations": [
 4         {
 5             "name": ".NET Core Launch (web)",     
 6             "type": "coreclr",
 7             "request": "launch",
 8             "preLaunchTask": "build",
 9             "program": "${workspaceRoot}/bin/Debug/netcoreapp1.0/CoreTest.dll",
10             "args": [],
11             "cwd": "${workspaceRoot}",
12             "externalConsole": false,
13             "stopAtEntry": false,
14             "internalConsoleOptions": "openOnFirstSessionStart"
15         }
16     ]
17 }
launch.json

  修改 .vscode\tasks.json 文件

  

  代碼如下:

 1 {
 2     "version": "0.1.0",
 3     "command": "dotnet",
 4     "isShellCommand": true,
 5     "args": [],
 6     "tasks": [
 7         {
 8             "taskName": "build",
 9             "args": [
10                 "${workspaceRoot}\\project.json"
11             ],
12             "isBuildCommand": true,
13             "problemMatcher": "$msCompile"
14         }
15     ]
16 }
tasks.json

  修改 project.json 項目文件

  

  代碼如下:

 1 {
 2   "version": "1.0.0-*",
 3 
 4   "buildOptions": {
 5     "debugType": "portable",
 6     "emitEntryPoint": true
 7   },
 8 
 9   // 依賴項
10   "dependencies": {
11     "Microsoft.AspNetCore.Server.Kestrel":"1.0.0" , 
12     "Microsoft.AspNetCore.Mvc": "1.0.0"
13   },
14 
15   "frameworks": {
16     "netcoreapp1.0": {
17       "dependencies": {
18         "Microsoft.NETCore.App": {    
19           "type": "platform",  
20           "version": "1.0.0"
21         }
22       },
23       "imports": [  
24         "dnxcore50"  
25       ]
26     }
27   }
28 }
project.json

  添加 Startup.cs 文件

  

  代碼如下:

 1 using Microsoft.AspNetCore.Builder;
 2 using Microsoft.Extensions.DependencyInjection;
 3 
 4 namespace WebApiFrame
 5 {
 6     public class Startup
 7     {
 8         /*
 9          *  IServiceCollection  配置應用中可用的服務
10          */
11         public void ConfigureServices(IServiceCollection services)
12         {
13             services.AddMvc();  
14         }
15 
16         /*
17          *  IApplicationBuilder  構建HTTP請求管道
18          */
19         public void Configure(IApplicationBuilder app)
20         {
21             app.UseMvc();  
22         }
23     }
24 }
Startup.cs

  修改 Program.cs 文件

  

   代碼如下:

 1 using Microsoft.AspNetCore.Hosting;
 2 
 3 namespace WebApiFrame
 4 {
 5     public class Program
 6     {
 7         public static void Main(string[] args)
 8         {
 9             var host = new WebHostBuilder()
10                 .UseKestrel()
11                 .UseStartup<Startup>()
12                 .Build();
13 
14             host.Run();
15         }
16     }
17 }
Program.cs

三.添加 Hello World API

  RESTFul 風格包含四種動詞: GET/POST/PUT/DELETE

  GET --> 獲取

  POST --> 更新

  PUT --> 新建

  DELETE --> 刪除

  添加 Controllers 文件夾

  在此文件下添加 HelloWorldController.cs 文件

  代碼如下:

 1 using System.Linq;
 2 using System.Collections.Generic;
 3 using Microsoft.AspNetCore.Mvc;
 4 
 5 namespace WebApiFrame.Controllers
 6 {
 7     [Route("api/[controller]")]
 8     public class HelloWorldController : Controller
 9     {
10         [HttpGet("{id}")]
11         public IActionResult Get(int id)
12         {
13             //
14             var model = new HelloWorldModel().All.FirstOrDefault(it => it.ID == id);
15 
16             //
17             var data = default(object);
18             if (model != null)
19             {
20                 data = model;
21             }
22             else
23             {
24                 data = new { Message = "沒有數據!" };
25             }
26 
27             //
28             return Json(data);
29         }
30 
31         [HttpPost]
32         public IActionResult Post([FromBody] HelloWorldModel model)
33         {
34             return Json(new
35             {
36                 Message = "更新成功!"
37             });
38         }
39 
40         [HttpPut]
41         public IActionResult Put([FromBody] HelloWorldModel model)
42         {
43             return Json(new
44             {
45                 Message = "新建成功!"
46             });
47         }
48 
49         [HttpDelete("{id}")]
50         public IActionResult Delete(int id)
51         {
52             return Json(new
53             {
54                 Message = id + ":刪除成功!"
55             });
56         }
57     }
58 
59     public class HelloWorldModel
60     {
61         public int ID { get; set; }
62         public string PropA { get; set; }
63         public string PropB { get; set; }
64 
65         private static List<HelloWorldModel> _All = new List<HelloWorldModel>
66         {
67             new HelloWorldModel{ID=1,PropA="1PA",PropB="1PB"},
68             new HelloWorldModel{ID=2,PropA="2PA",PropB="2PB"},
69             new HelloWorldModel{ID=3,PropA="3PA",PropB="3PB"}
70         };
71         public List<HelloWorldModel> All  // 僅測試用,生產中這樣寫是有各種問題的,具體什麼問題自己分析~~
72         {
73             get
74             {
75                 return _All;
76             }
77             set
78             {
79                 _All = value;
80             }
81         }
82     }
83 }
HelloWorldController.cs

四.使用 Visual Studio Code 運行

    參照 新建 ASP.NET Core MVC 項目 -- Hello World! 調試運行,

  使用 HTTP Post man 進行數據請求調試

  GET : http://localhost:5000/api/HelloWorld/1  如圖:

  

  F5 調試通過,如圖:

  

  POST :  http://localhost:5000/api/HelloWorld/

  Content : 見下圖

  

  F5 調試通過,如圖:

  

  PUT:  http://localhost:5000/api/HelloWorld/

  Content : 見下圖

  

   F5 調試通過,如圖:

  

   DELETE : http://localhost:5000/api/HelloWorld/1

   

  F5 調試通過,如圖:

  

 

 

                                         蒙

                                    2016-09-22  11:58  周四

 

 

 

             支付寶打賞:                                    微信打賞:  

                     

 


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

-Advertisement-
Play Games
更多相關文章
  • 現象:公司內網的工作電腦無法建立遠程桌面,當出現這個問題時,排查了下原因,終於得到解決。 原因分析: 1、因為是內網伺服器,所以需要在公網路由器上面進行埠映射(這裡涉及到不同路由器型號已經網路知識,這裡不再贅述),首先排查了公司外網路由器上面所做的 埠映射,在公網使用telnet IP port ...
  • 編譯器,解釋器 編程語言:機器語言、彙編語言、高級語言 靜態語言:編譯型語言 強類型(變數類型):變數在使用前,必須事先聲明,初始化 關鍵字 事先轉換成可執行格式 C,C++,Java,C#, 動態語言:解釋型語言, on the fly 弱類型:變數用時聲明,不區分類型(Python) 邊解釋邊執 ...
  • 介紹 gzip是linux自帶的壓縮文件命令,它的壓縮比大概能達到60%-70%,比zip的壓縮比更高。使用gzip壓縮預設會在文件後加上.gz尾碼並將源文件刪除。gunzip是解壓縮命令。 gzip 1.不指定路徑 gzip filename [root@master backup]# ll to ...
  • • 微博: 小樣兒老師2015 關於 嚴格來說,本文題目應該是我的單片機、DSP和ARM+Linux學習之路,但這個寫法實在太繞口——況且嵌入式往往暗指MCU,DSP,ARM等微處理器加上嵌入式操作系統,所以我認為本文題目是合理的。 這篇文章講了什麼? • 我這些年學單片機、DSP和ARM+Linu ...
  • 創建基於對話框的Win32應用程式(三) —— Checkbox的應用、窗體置頂、設置圖標 上一節創建的窗體應用程式中,我們用到了Button和StaticText這兩個控制項。這一節中我們將學習使用Checkbox控制項,並實現將窗體置頂的功能。 17、首先切換到Reasource View(Ctrl ...
  • 思路: 1、查看有無安裝過mysql 或 2、查看有無安裝包 3、安裝mysql服務端 4、啟動&&停止 a、設置資料庫預設字元 在mysql配置文件/etc/my.cnf中加入default-character-set=utf8 b、設置開機自啟動 c、啟動mysql 5、登錄 a、創建root管 ...
  • 今天,開始記錄我的前端技術生涯! 今天,開始記錄我的博客園生涯! 今天,技術!產品!技術+產品=能力!!! 開啟新的生活!!! ...
  • 創建基於對話框的Win32應用程式(二) —— Button的應用、新建子窗體 可以發現上一節創建的窗體中,點擊OK和Cancel兩個按鈕是沒有任何反應的。現在我們來為他們添加退出對話框的功能。 6、首先定義命令消息響應函數(Dlg_OnCommand)如下: 其中IDOK和IDCANCEL分別是按 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...