【问题标题】:Implementing a net-core Web API That Returns Previous Response实现返回先前响应的 net-core Web API
【发布时间】:2018-10-03 18:48:54
【问题描述】:

我目前正在 net-core 中构建一个具有以下要求的 Web API:

  • 所有 Web 事务都必须有每个端点的唯一 Guid 标识符
  • 如果使用以前使用的 Guid 命中端点,则再次返回为此 Guid 给出的响应

我试图通过 JsonSerializing WebApi 控制器中的 IActionResult 来实现这一点,但我遇到了一个问题,我无法反序列化所有 IActionResult 响应,因为有些响应没有构造函数。

例如:

JsonSerializationException: Unable to find a constructor to use for type Microsoft.AspNetCore.Mvc.CreatedResult. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute.

有人知道是否可以解决这个问题吗?

【问题讨论】:

    标签: api asp.net-core


    【解决方案1】:

    就个人而言,我会使用response caching middleware。你可以让它在你的 GUID 上有所不同,只要它包含在请求中,它只会在 GUID 不同时呈现操作。

    简而言之,如果您想手动处理此问题,请缓存您打算返回的 JSON,而不是完整的响应对象。然后,您不需要重新查询数据库等,您只需返回响应,这并没有那么大的开销。

    【讨论】:

    • 这个问题有时是我回复 404 或 400 或其他错误,我也希望能够捕获它。从长远来看,我们可能会重定向或类似的东西,我也希望能够捕捉到这一点。
    • 这种行为是非典型的。您在这里谈论的是重播,对其的正常响应实际上类似于 400,无论它是否是“好”请求。如果您打算要求每个请求都有一个唯一的 ID,那么重复使用相同的 ID 应该是错误的。
    • 我同意,但这不是客户想要的,我已经尝试过论证这一点。但是,他们坚持认为这是他们想要的,所以我正在实施它。
    猜你喜欢
    • 2021-10-29
    • 2020-06-04
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多