ApiResponse.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Text.Json.Serialization;
  2. namespace Web.Api.Common;
  3. public sealed class ApiResponse
  4. {
  5. [JsonPropertyName("success")]
  6. public bool Success { get; init; }
  7. [JsonPropertyName("data")]
  8. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
  9. public object? Data { get; init; }
  10. [JsonPropertyName("status")]
  11. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
  12. public int Status { get; init; }
  13. [JsonPropertyName("message")]
  14. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
  15. public string? Message { get; init; }
  16. [JsonPropertyName("errors")]
  17. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
  18. public object? Errors { get; init; }
  19. public static IResult Ok(object? data = null)
  20. {
  21. return Results.Ok(new ApiResponse
  22. {
  23. Success = true,
  24. Data = data
  25. });
  26. }
  27. public static IResult Created(object? data = null)
  28. {
  29. return Results.Json(new ApiResponse
  30. {
  31. Success = true,
  32. Data = data
  33. }, statusCode: StatusCodes.Status201Created);
  34. }
  35. public static IResult Fail(int status, string message, object? errors = null)
  36. {
  37. return Results.Json(new ApiResponse
  38. {
  39. Success = false,
  40. Status = status,
  41. Message = message,
  42. Errors = errors
  43. }, statusCode: status);
  44. }
  45. }