在ASP.NET Web API中,我们可以使用ApiControllerAttribute特性来标记控制器类,并将其识别为Web API控制器。可选参数是指在Web API方法中,可以将某些参数声明为可选的,即可以选择性地不传递该参数。
以下是一个示例,展示了如何使用ApiControllerAttribute和可选参数:
using System;
using System.Web.Http;
[ApiController] // 使用ApiControllerAttribute特性标记控制器类
public class UserController : ApiController
{
    // GET api/user
    // 可选参数id,如果不传递id,默认为0
    public IHttpActionResult Get(int id = 0)
    {
        if (id == 0)
        {
            return Ok("No ID provided");
        }
        else
        {
            return Ok($"ID: {id}");
        }
    }
}
在上面的代码中,我们创建了一个名为UserController的控制器类,并使用ApiControllerAttribute特性标记它。然后,我们定义了一个名为Get的方法,它接受一个可选参数id。如果不传递id参数,它的默认值将为0。
在Get方法中,我们首先检查传递的id值是否为0。如果是0,则返回一个带有"No ID provided"消息的Ok结果。否则,返回一个带有"ID: {id}"消息的Ok结果,其中{id}是传递的id值。
这样,我们就可以通过访问/api/user来调用Get方法。如果不传递id参数,将返回"No ID provided"消息。如果传递id参数,将返回"ID: {id}"消息。
请注意,使用ApiControllerAttribute特性标记控制器类将启用一些默认行为,例如自动HTTP状态码选择和格式化响应。你还可以根据需要添加其他特性来自定义控制器和方法的行为。