WebAPI 核心 2.0 通过 post params 缓存

Posted

技术标签:

【中文标题】WebAPI 核心 2.0 通过 post params 缓存【英文标题】:WebAPI core 2.0 Cache by post params 【发布时间】:2018-10-11 16:51:03 【问题描述】:

我正在构建一个纯 json api,我想根据 post 参数缓存响应。有没有类似 VaryByQueryKeys 的方法? 也许是一些自定义缓存中间件或?

我当然可以使用 MemoryCache,但想知道是否有一些“内置”实践。

【问题讨论】:

【参考方案1】:

当然不应该期望在 post API 中缓存

但是在特殊控制器上查看这个示例代码,而不是在中间件中,它不是“内置”

可能有用

  public class XController : Controller
   
    private readonly IMemoryCache _cache;
    public XController(IMemoryCache cache)
    
        _cache = cache;
    

    [HttpPost]
    public async Task<IEnumerable<YourCustomModel>> Post([FromBody] ParamtersModel value)
    
        string cacheKey = value.Id.ToString();
        IEnumerable<YourCustomModel> cacheEntry = await _cache.GetOrCreate(cacheKey, async entry =>
        
            entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(60);
           
            IEnumerable<YourCustomModel> result = await ... your method calling for first time to getting in cache
            return result;

        );
        return cacheEntry;
    

   

【讨论】:

【参考方案2】:

在此处查看此线程: WebAPI caching for http Post

您真的需要 HttpPost 请求来满足您的要求吗?您是否考虑过使用 GET 请求然后利用客户端缓存?

【讨论】:

是的,我们的 API 是纯 JSON api,使用 POST 99% 对于带有 POST 方法的纯 Json API,您需要使用 MemCache 或 Redis 或任何其他缓存提供程序在服务器端缓存数据。 只使用 MemryCache 和 MemCache 有什么缺点?

以上是关于WebAPI 核心 2.0 通过 post params 缓存的主要内容,如果未能解决你的问题,请参考以下文章

在 .net 核心 webAPI 中启用 CORS

Web API 2.0 上的 COR 请求

webapi 2.0 跨域行为

应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与实体框架核心 2.0 数据库第一种方法

如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi

.net core 2.0 JWT 令牌