Web API 約定 預設的約定 集將應用於 ContactsConventionController 中的所有操作: 預設的約定集將應用於程式集中的所有操作: 創建 Web API 約定 如果預設 API 約定不能滿足需要,請創建自己的約定。 約定是: 帶有方法的靜態類型。 能夠對操作定義 "響應 ...
Web API 約定
預設的約定
集將應用於 ContactsConventionController 中的所有操作:
[ApiController]
[ApiConventionType(typeof(DefaultApiConventions))]
[Route("api/[controller]")]
public class ContactsConventionController : ControllerBase
{
預設的約定集將應用於程式集中的所有操作:
[assembly: ApiConventionType(typeof(DefaultApiConventions))]
namespace ApiConventions
{
public class Startup
{
創建 Web API 約定
如果預設 API 約定不能滿足需要,請創建自己的約定。 約定是:
響應類型
這些方法使用 [ProducesResponseType]
或 [ProducesDefaultResponseType]
屬性進行批註。 例如:
C#複製
public static class MyAppConventions
{
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public static void Find(int id)
{
}
}
如果沒有更具體的元數據屬性,則將此約定應用於程式集可強制實現以下內容:
- 該約定方法應用於所有名為
Find
的操作。 id
操作上存在名為Find
的參數。
命名要求
[ApiConventionNameMatch]
和 [ApiConventionTypeMatch]
屬性可應用於約定方法,確定它們所要應用的操作。 例如:
C#複製
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
public static void Find(
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Suffix)]
int id)
{ }
在上面的示例中:
- 應用於該方法的
Microsoft.AspNetCore.Mvc.ApiExplorer.ApiConventionNameMatchBehavior.Prefix
選項表示該約定可匹配首碼是“Find”的任何操作。 匹配的操作可以是Find
、FindPet
和FindById
。 - 應用於該參數的
Microsoft.AspNetCore.Mvc.ApiExplorer.ApiConventionNameMatchBehavior.Suffix
表示該約定可匹配帶有唯一以標識符作為尾碼結尾的參數的方法。 示例包括id
或petId
等參數。 與此類似,可將ApiConventionTypeMatch
應用於類型,以約束參數類型。params[]
參數指示無需顯式匹配的剩餘參數。