Bu düzenlemeyi, sadece 200 ve 400 Status kodlarını döndüğümüz için yapma gereği duydum.
Enum olarak ResponseStatus eklendi ve bu enumda ihtiyacımız olan, kullandığımız HTTP response status kodları tutuluyor.
BaseController'daki bütün geri dönüşler kaldırıldı ve sadece veri alabilen ApiResponse ve normal ApiResponse için iki metot bırakıldı. Bu metotlar StatusCode üzerinden, ApiResponse objesini sunuyor. Dönüş status kodunu ise ApiResponse objesinin StatusCode alanından ediniyor
* ApiResponse objesinin succes propertysini ctorlardan edinmek kaldırıldı ve ResponseStatus propertysine bakılarak succes olup, olmadığına karar verilmesi sağlandı.
```csharp
public ApiResponse(ResponseStatus status, string message)
{
StatusCode = status;
Success = StatusCode < ResponseStatus.BadRequest; //
Message = message;
}
SuccesApiResponse ve ErrorApiResponse ctorları düzenlendi.
public SuccessApiResponse(ResponseStatus status, string message) : base(status, message)
{
}
return new SuccesApiResponse(ResponseStatus.Created, "Custom"); // Verisiz, Status kodu: 201, Mesaj: "Custom"
public SuccessApiResponse(ResponseStatus status) : base(status, ResultMessage.Success)
{
}
return new SuccesApiResponse(ResponseStatus.Created); // Verisiz, Status kodu: 201, Sabit Succes mesajı
public SuccessApiResponse() : base(ResponseStatus.Ok, ResultMessage.Success)
{
}
return new SuccesApiResponse(); // Verisiz, Status kodu: 200, Sabit Succes mesajı
public SuccessApiResponse(ResponseStatus status, T data, string message) : base(status, message)
{
Data = data;
}
return new SuccesApiResponse<T>(ResponseStatus.Created, data, "Custom"); // T verisi, Status kodu: 201, Mesaj: "Custom"
public SuccessApiResponse(ResponseStatus status, T data) : base(status, ResultMessage.Success)
{
Data = data;
}
return new SuccesApiResponse<T>(ResponseStatus.Created, data); // T verisi, Status kodu: 201, Sabit Succes mesajı
public SuccessApiResponse(T data) : base(ResponseStatus.Ok, ResultMessage.Success)
{
Data = data;
}
return new SuccesApiResponse<T>(data); // T verisi, Status kodu: 200, Sabit Succes mesajı
public ErrorApiResponse(ResponseStatus status, string message) : base(status, message: message)
{
}
return new ErrorApiResponse(ResponseStatus.Forbid, "Custom"); //Verisiz, Status kodu: 403, Mesaj: "Custom"
public ErrorApiResponse(string message) : base(ResponseStatus.BadRequest, message)
{
}
return new ErrorApiResponse("Custom") //Verisiz, Status kodu: 400, Mesaj: "Custom"
public ErrorApiResponse(ResponseStatus status, T data, string message) : base(status, message: message)
{
Data = data;
}
return new ErrorApiResponse<T>(ResponseStatus,NotFound, default, "Custom"); // T verisi, Status kodu: 404, Mesajı: "Custom"
public ErrorApiResponse(T data, string message) : base(ResponseStatus.BadRequest, message);
{
Data = data;
}
return new ErrorApiResponse<T>(default, "Custom"); // T verisi, Status kodu: 400, Mesajı: "Custom"
Bu düzenlemeyi, sadece 200 ve 400 Status kodlarını döndüğümüz için yapma gereği duydum.
[NonAction] protected IActionResult ApiResponse(ApiResponse response) => StatusCode((int)response.StatusCode, response);