<C#>.NET WebAPI 的 FromBody ,FromForm ,FromServices等詳細解釋

在 .NET 8 Web API 中,[FromBody][FromForm][FromHeader][FromKeyedServices][FromQuery][FromRoute][FromServices] 這些都是用于綁定控制器動作方法參數的特性,下面為你詳細解釋這些特性。

1. [FromBody]

  • 作用:從 HTTP 請求的消息體中綁定參數。一般用于處理 JSON 或 XML 格式的數據,常用于 POST、PUT 等請求。
  • 示例
[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{[HttpPost]public IActionResult CreateUser([FromBody] User user){// 處理接收到的用戶對象return Ok(user);}
}public class User
{public string Name { get; set; }public int Age { get; set; }
}
  • 請求示例
{"Name": "John Doe","Age": 30
}

2. [FromForm]

  • 作用:從 HTTP 請求的表單數據中綁定參數。通常用于處理 application/x-www-form-urlencodedmultipart/form-data 格式的表單數據。
  • 示例
[ApiController]
[Route("[controller]")]
public class FormController : ControllerBase
{[HttpPost]public IActionResult SubmitForm([FromForm] string name, [FromForm] int age){return Ok($"Name: {name}, Age: {age}");}
}
  • 請求示例(使用 HTML 表單)
<form action="/Form" method="post"><input type="text" name="name" /><input type="number" name="age" /><input type="submit" value="Submit" />
</form>

3. [FromHeader]

  • 作用:從 HTTP 請求的頭部中綁定參數。當需要從請求頭中獲取特定信息時使用,比如 Authorization 頭。
  • 示例
[ApiController]
[Route("[controller]")]
public class HeaderController : ControllerBase
{[HttpGet]public IActionResult GetData([FromHeader(Name = "X-Custom-Header")] string customHeader){return Ok($"Custom Header Value: {customHeader}");}
}
  • 請求示例(使用 Postman 或類似工具設置請求頭)
X-Custom-Header: SomeValue

4. [FromKeyedServices]

  • 作用:從依賴注入容器中獲取具有特定鍵的服務實例并綁定到參數。在使用鍵控服務時,可通過此特性按鍵獲取服務。
  • 示例
// 注冊鍵控服務
services.AddKeyedSingleton<IMyService, MyService>("key1");[ApiController]
[Route("[controller]")]
public class KeyedServiceController : ControllerBase
{[HttpGet]public IActionResult GetData([FromKeyedServices("key1")] IMyService service){return Ok(service.GetData());}
}public interface IMyService
{string GetData();
}public class MyService : IMyService
{public string GetData(){return "Some data";}
}

5. [FromQuery]

  • 作用:從 HTTP 請求的查詢字符串中綁定參數。常用于 GET 請求,參數會附加在 URL 后面。
  • 示例
[ApiController]
[Route("[controller]")]
public class QueryController : ControllerBase
{[HttpGet]public IActionResult GetData([FromQuery] string name, [FromQuery] int age){return Ok($"Name: {name}, Age: {age}");}
}
  • 請求示例
/Query?name=John&age=30

6. [FromRoute]

  • 作用:從路由模板中綁定參數。路由模板定義了 URL 的結構,參數會嵌入到 URL 路徑中。
  • 示例
[ApiController]
[Route("api/[controller]/{id}")]
public class RouteController : ControllerBase
{[HttpGet]public IActionResult GetData([FromRoute] int id){return Ok($"ID: {id}");}
}
  • 請求示例
/api/Route/123

7. [FromServices]

  • 作用:從依賴注入容器中獲取服務實例并綁定到參數。當控制器動作方法需要使用某個服務時,可通過此特性注入該服務。
  • 示例
// 注冊服務
services.AddScoped<IMyService, MyService>();[ApiController]
[Route("[controller]")]
public class ServiceController : ControllerBase
{[HttpGet]public IActionResult GetData([FromServices] IMyService service){return Ok(service.GetData());}
}public interface IMyService
{string GetData();
}public class MyService : IMyService
{public string GetData(){return "Some data";}
}

這些特性可以幫助開發者更靈活地處理不同來源的數據,提高代碼的可讀性和可維護性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76814.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

# 透視 Linux 內核:Socket 機制的底層架構與運行邏輯深度解析

在由 Linux 操作系統構建的龐大網絡生態中&#xff0c;Socket 作為網絡通信的核心樞紐&#xff0c;承載著不同主機間應用進程的數據交互重任。無論是日常的網頁瀏覽、在線游戲&#xff0c;還是復雜的分布式系統通信&#xff0c;Socket 都在幕后扮演著關鍵角色。盡管多數開發者對…

# 利用遷移學習優化食物分類模型:基于ResNet18的實踐

利用遷移學習優化食物分類模型&#xff1a;基于ResNet18的實踐 在深度學習的眾多應用中&#xff0c;圖像分類一直是一個熱門且具有挑戰性的領域。隨著研究的深入&#xff0c;我們發現利用預訓練模型進行遷移學習是一種非常有效的策略&#xff0c;可以顯著提高模型的性能&#…

Excel提取圖片并自動上傳到文件服務器(OOS),獲取文件鏈接

Excel提取圖片并自動上傳到接口 在實際項目中&#xff0c;我們可能經常會遇到需要批量從Excel文件&#xff08;.xlsx&#xff09;中提取圖片并上傳到特定接口的場景。今天&#xff0c;我就詳細介紹一下如何使用Python實現這一功能&#xff0c;本文會手把手教你搭建一個完整的解…

jmeter利用csv進行參數化和自動斷言

1.測試數據 csv測試數據如下&#xff08;以注冊接口為例&#xff09; 2.jemer參數化csv設置 打開 jmeter&#xff0c;添加好線程組、HTTP信息頭管理器、CSV 數據文件設置、注冊請求、響應斷言、查看結果樹 1&#xff09; CSV 數據文件設置 若 CSV 中數據包含中文&#xff0c;…

騰訊云對象存儲m3u8文件使用騰訊播放器播放

參考騰訊云官方文檔&#xff1a; 播放器 SDK Demo 體驗_騰訊云 重要的一步來了&#xff1a; 登錄騰訊云控制臺&#xff0c;找到對象存儲的存儲桶。 此時&#xff0c;再去刷新剛才創建的播放器html文件&#xff0c;即可看到播放畫面了。

CSS 美化頁面(五)

一、position屬性 屬性值??描述??應用場景?static默認定位方式&#xff0c;元素遵循文檔流正常排列&#xff0c;top/right/bottom/left 屬性無效?。普通文檔流布局&#xff0c;默認布局&#xff0c;無需特殊定位。relative相對定位&#xff0c;相對于元素原本位置進行偏…

Spring MVC 核心注解與文件上傳教程

一、RequestBody 注解詳解 1. 基本使用 作用&#xff1a;從 HTTP 請求體中獲取數據&#xff0c;適用于 POST/PUT 請求。 限制&#xff1a;GET 請求無請求體&#xff0c;不可使用該注解。 示例代碼 Controller RequestMapping("/demo01") public class Demo01Cont…

js原型鏈prototype解釋

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

為您的照片提供本地 AI 視覺:使用 Llama Vision 和 ChromaDB 構建 AI 圖像標記器

有沒有花 20 分鐘瀏覽您的文件夾以找到心中的特定圖像或屏幕截圖&#xff1f;您并不孤單。 作為工作中的產品經理&#xff0c;我總是淹沒在競爭對手產品的屏幕截圖、UI 靈感以及白板會議或草圖的照片的海洋中。在我的個人生活中&#xff0c;我總是捕捉我在生活中遇到的事物&am…

Kafka消費者端重平衡流程

重平衡的完整流程需要消費者 端和協調者組件共同參與才能完成。我們先從消費者的視角來審視一下重平衡的流程。在消費者端&#xff0c;重平衡分為兩個步驟&#xff1a;分別是加入組和等待領導者消費者&#xff08;Leader Consumer&#xff09;分配方案。這兩個步驟分別對應兩類…

2025年五大ETL數據集成工具推薦

ETL工具作為打通數據孤島的核心引擎&#xff0c;直接影響著企業的決策效率與業務敏捷性。本文精選五款實戰型ETL解決方案&#xff0c;從零門檻的國產免費工具到國際大廠企業級平臺&#xff0c;助您找到最適合的數據集成利器。 一、谷云科技ETLCloud&#xff1a;國產數據集成工…

PageIndex:構建無需切塊向量化的 Agentic RAG

引言 你是否對長篇專業文檔的向量數據庫檢索準確性感到失望&#xff1f;傳統的基于向量的RAG系統依賴于語義相似性而非真正的相關性。但在檢索中&#xff0c;我們真正需要的是相關性——這需要推理能力。當處理需要領域專業知識和多步推理的專業文檔時&#xff0c;相似度搜索常…

ubuntu20.04 遠程桌面Xrdp方式

1&#xff0c;Ubuntu 安裝Xrdp 方法 1.1&#xff0c;安裝xrdp sudo apt install xrdp 1.2&#xff0c;檢查xrdp狀態 sudo systemctl status xrdp 1.3&#xff0c;加入ssl-cert sudo adduser xrdp ssl-cert 1.4&#xff0c;重啟xrdp服務 sudo systemctl restart xrdp 最后…

Java學習手冊:RESTful API 設計原則

一、RESTful API 概述 REST&#xff08;Representational State Transfer&#xff09;即表述性狀態轉移&#xff0c;是一種軟件架構風格&#xff0c;用于設計網絡應用程序。RESTful API 是符合 REST 原則的 Web API&#xff0c;通過使用 HTTP 協議和標準方法&#xff08;GET、…

Spring Boot 核心注解全解:@SpringBootApplication背后的三劍客

大家好呀&#xff01;&#x1f44b; 今天我們要聊一個超級重要的Spring Boot話題 - 那個神奇的主類注解SpringBootApplication&#xff01;很多小伙伴可能每天都在用Spring Boot開發項目&#xff0c;但你真的了解這個注解背后的秘密嗎&#xff1f;&#x1f914; 別擔心&#x…

weibo_har鴻蒙微博分享,單例二次封裝,鴻蒙微博,微博登錄

weibo_har鴻蒙微博分享&#xff0c;單例二次封裝&#xff0c;鴻蒙微博 HarmonyOS 5.0.3 Beta2 SDK&#xff0c;原樣包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) &#x1f3c6;簡介 zyl/weibo_har是微博封裝使用&#xff0c;支持原生core使用 &a…

tomcat集成redis實現共享session

中間件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…

JavaScript 擴展Array類方法實現數組求和

題目描述&#xff1a;使用原型對象擴展Array類&#xff0c;實現返回數字型數組的和 <script>const arr [1,2,3,4,5,6]Array.prototype.sum function(){return this.reduce((prev,item)>prev item,0)}console.log(arr.sum())</script>求和函數中this 指向調用…

中間件--ClickHouse-11--部署示例(Linux宿主機部署,Docker容器部署)

一、Linux宿主機部署 1、環境準備 操作系統&#xff1a;推薦使用 CentOS 7/8 或 Ubuntu 18.04/20.04。硬件要求&#xff1a; 至少 2 核 CPU 和 4GB 內存。足夠的磁盤空間&#xff08;根據數據量評估&#xff09;。CPU需支持SSE4.2指令集&#xff08;可通過以下命令檢查&#…

鴻蒙NEXT開發權限工具類(申請授權相關)(ArkTs)

import abilityAccessCtrl, { Permissions } from ohos.abilityAccessCtrl; import { bundleManager, common, PermissionRequestResult } from kit.AbilityKit; import { BusinessError } from ohos.base; import { ToastUtil } from ./ToastUtil;/*** 權限工具類&#xff08;…