1. 扩展静态类和方法
对于HttpContext对象,如果想要在它的基础上扩展新的方法,该怎样实现呢?
创建一个静态类HttpContextExtensions.cs,在静态类里面实现一个静态方法GetValue,它的第一个参数是HttpContext对象,然后可以在方法内使用HttpContext对象context。
// HttpContextExtensions.cs
public static class HttpContextExtensions
{
public static string GetValue(this HttpContext context, string key)
{
return context.Request.Cookies.ContainsKey(key)
? context.Request.Cookies[key]
: null;
}
}
然后在其他使用HttpContext对象的地方,可以使用自定义的方法,如下:
// 使用处
context.GetValue("test")
2. 数据映射时的名称转化
有一个请求数据的接口,获取回来的JSON数据属性名与项目中定义的有出入,此时,又不想更改项目中定义的名称,如何解决这个问题?
此时此刻JsonPropertyName就派上了用场。可以用来做名称匹配,如以下代码所示,会把来自JSON中的access_token用AccessToken字符串来接受。
[JsonPropertyName("access_token")]
public string AccessToken { get; set; }
// access_token --> AccessToken
3. AllowAnonymous
项目的接口访问是需要token认证的,如果此时某些接口想要跳过认证的话,如何实现?
可以在controller层的接口上加上[AllowAnonymous],那么该接口就可以跳过认证步骤。
[AllowAnonymous]
[HttpGet("api")]
public async Task<IActionResult> Api()
{
return Ok();
}