如何使用dotnet core 編寫REST風格API
當 asp. net core 釋出時, microsoft 和. net 社群決定合併 mvc 和 web api 的功能。這是有道理的, 因為兩者是非常相似。這篇文章主要包含如下內容:
- Web API 和 MVC
- 採用ASP.NET Core MVC 6 建立 REST API
- 編寫 REST API 的其它框架 - NancyFx
ASP.NET Web API 和 MVC: 有什麼區別嗎?
在ASP.NET Core 之前,它們是非常相似的。都採用了MVC模式,包含 controllers 和 actions。Web API 缺少像Razor這樣的檢視引擎,而是用來實現REST API。MVC 是用來設計帶有HTML前臺的標準Web應用。
微軟將 web api 吹捧為構建任何型別的 http 服務的框架。它是 wcf、soap 和較舊的 asmx 風格 web 服務的一個很好的替代方案。它是從頭開始設計的, 考慮到了 json 和 rest。web api 還支援 odata, 這是通過 crud 操作查詢資料的標準方式。
採用命令 dotnet new wepapi 建立專案,預設會建立一個樣例API,包括 GET, POST, PUT, DELETE 這些REST標準的方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace dotnetCore.jwt.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}
微軟網站上有個標準教程
Nancy 也是編寫API的一個好的選擇
除了 asp. net 附帶的標準 mvc 框架之外, 還有一些社群替代方案。其中最受歡迎的一種叫Nancy。它已經存在了相當長的時間, 並且是使用 mono 構建的 web 應用在 linux 上執行的熱門選項, 因為它允許 asp. net 在沒有 iis 或標準 system. web 管道的情況下工作。
Nancy能做什麼?這裡是基本框架內建功能的簡短列表︰
- 基於 rest 路由
- 內建的簡單檢視引擎,可置換
- 提供靜態檔案服務
- 多租戶服務託管
- Rest API 認證 (基本認證,表單認證和基於令牌的認證)
- 靈活模型繫結
- 多格式內容協商
- 密碼金鑰和短語生成
- SSL 證書處理
- 非同步任務處理
- 依賴注入
Nancy對引數的讀取讓人非常喜歡,下面是一個簡單示例,你可以瞭解下。
public class Module : NancyModule
{
public Module()
{
Get("/greet/{name}", x => {
return string.Concat("Hello ", x.name);
});
}
}
想了解更多Nancy的資訊可以訪問官方Github https://github.com/NancyFx/Nancy
文章參考:
https://stackify.com/asp-net-core-web-api-guide/
https://www.cnblogs.com/lilunjia/tag/NancyFx/
相關文章
- rest-api設計風格RESTAPI
- dotnet core如何編譯exe編譯
- 軟體編寫風格
- Rest 風格說明REST
- REST設計風格REST
- .Net Core 開發電商後端API 吃透RESTful風格後端APIREST
- 如何使用 Flask 編寫 Python Web APIFlaskPythonWebAPI
- Springboot中Rest風格請求對映如何開啟並使用Spring BootREST
- RESTful風格APIRESTAPI
- Vue API風格VueAPI
- 使用 vue-class-setup 編寫 class 風格組合式API,支援Vue2和Vue3VueAPI
- Dotnet Core Public API的安全實踐API
- 理解本真的REST架構風格REST架構
- REST架構風格的由來REST架構
- SpringMVC(2)-Rest請求風格SpringMVCREST
- 在 .NET Core 中構建 REST APIRESTAPI
- 使用ASP.NET Web Api構建基於REST風格的服務實戰系列教程ASP.NETWebAPIREST
- 撰寫合格的REST APIRESTAPI
- 編寫 Node.js Rest API 的 10 個最佳實踐Node.jsRESTAPI
- REST架構風格的架構元素REST架構
- Restlet - REST架構風格的介紹REST架構
- 【閱讀筆記】REST設計風格筆記REST
- PEP 8 程式程式碼的編寫風格指南
- 用 Haskell 編寫 CEK 風格的直譯器Haskell
- 如何使用 ThinkJS 優雅的編寫 RESTful APIJSRESTAPI
- 快用Django REST framework寫寫API吧DjangoRESTFrameworkAPI
- RESTful api風格介紹RESTAPI
- dotnet core高吞吐Http api服務元件FastHttpApiHTTPAPI元件AST
- 優步公司的Go語言編寫風格指南Go
- 如何使用Go語言寫出物件導向風格的程式碼Go物件
- 如何快速編寫一個微信Api?API
- 如何編寫優質的API文件API
- Dotnet Core多版本API共存的優雅實現API
- 關於構建REST風格的SOE的策略REST
- flask restful 風格 API,如何完成 RBAC 許可權控制?FlaskRESTAPI
- 編寫可維護的JavaScript-程式設計風格JavaScript程式設計
- 如何使用 Pyramid 和 Cornice 編寫 Python Web APIPythonWebAPI
- 在 ASP .NET Core 中實現冪等 REST APIRESTAPI