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[]引數指示無需顯式匹配的剩余引數,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/38397.html
標籤:.NET Core
