1. 程式人生 > WINDOWS開發 >Web API 約定

Web 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”的任何操作。 匹配的操作可以是 FindFindPetFindById
  • 應用於該引數的 Microsoft.AspNetCore.Mvc.ApiExplorer.ApiConventionNameMatchBehavior.Suffix 表示該約定可匹配帶有唯一以識別符號作為字尾結尾的引數的方法。 示例包括 idpetId 等引數。 與此類似,可將 ApiConventionTypeMatch 應用於型別,以約束引數型別。 params[] 引數指示無需顯式匹配的剩餘引數。