我想創建自定義 JSON 格式,它將響應包裝在數據中并返回 Content-Type 之類的vnd.myapi+json目前我已經創建了一個像我在控制器中返回的包裝類,但如果可以在后臺處理它會更好:public class ApiResult<TValue>{ [JsonProperty("data")] public TValue Value { get; set; } [JsonExtensionData] public Dictionary<string, object> Metadata { get; } = new Dictionary<string, object>(); public ApiResult(TValue value) { Value = value; }}[HttpGet("{id}")]public async Task<ActionResult<ApiResult<Bike>>> GetByIdAsync(int id){ var bike = _dbContext.Bikes.AsNoTracking().SingleOrDefault(e => e.Id == id); if (bike == null) { return NotFound(); } return new ApiResult(bike);}public static class ApiResultExtensions{ public static ApiResult<T> AddMetadata<T>(this ApiResult<T> result, string key, object value) { result.Metadata[key] = value; return result; }}我想返回如下響應:{ "data": { ... }, "pagination": { ... }, "someothermetadata": { ... }}但是分頁必須以某種方式添加到我的控制器操作中的元數據中,當然這里有一些關于內容協商的文章:https : //docs.microsoft.com/en-us/aspnet/core/web-api/advanced /formatting?view=aspnetcore-2.1但我仍然想確定我在正確的軌道上。如果這將使用我的自定義格式化程序在引擎蓋下處理,那么我將如何向其添加分頁之類的元數據,而不是在“數據”之外而不是在其中?當有一個自定義格式化程序時,我仍然希望有一些方法可以從我的控制器或通過某種機制向它添加元數據,以便格式可以擴展。上述方法的一個優點或缺點是它適用于所有序列化程序 xml、json、yaml 等。通過使用自定義格式化程序,它可能僅適用于 json,我將需要創建幾個不同的格式化程序來支持我使用的所有格式想。
ASP.NET Core 在 Web API 中處理自定義響應/輸出格式的方法
幕布斯6054654
2021-06-19 19:12:41