using Microsoft.AspNetCore.Mvc; namespace ProblemDetailsWebApi.Controllers; // [Route("api/[controller]/[action]")] [ApiController] public class Values2Controller : ControllerBase { // /api/values2/divide/1/2 [HttpGet("{Numerator}/{Denominator}")] public IActionResult Divide(double Numerator, double Denominator) { if (Denominator == 0) { return BadRequest(); } return Ok(Numerator / Denominator); } // /api/values2 /squareroot/4 [HttpGet("{radicand}")] public IActionResult Squareroot(double radicand) { if (radicand < 0) { return BadRequest(); } return Ok(Math.Sqrt(radicand)); } } // // [Route("api/[controller]/[action]")] [ApiController] public class ValuesController : ControllerBase { // /api/values/divide/1/2 [HttpGet("{Numerator}/{Denominator}")] public IActionResult Divide(double Numerator, double Denominator) { if (Denominator == 0) { var errorType = new MathErrorFeature { MathError = MathErrorType.DivisionByZeroError }; HttpContext.Features.Set(errorType); return BadRequest(); } return Ok(Numerator / Denominator); } // /api/values/squareroot/4 [HttpGet("{radicand}")] public IActionResult Squareroot(double radicand) { if (radicand < 0) { var errorType = new MathErrorFeature { MathError = MathErrorType.NegativeRadicandError }; HttpContext.Features.Set(errorType); return BadRequest(); } return Ok(Math.Sqrt(radicand)); } } // // [Route("api/[controller]/[action]")] [ApiController] public class Values3Controller : ControllerBase { // /api/values3/divide/1/2 [HttpGet("{Numerator}/{Denominator}")] public IActionResult Divide(double Numerator, double Denominator) { if (Denominator == 0) { var errorType = new MathErrorFeature { MathError = MathErrorType.DivisionByZeroError }; HttpContext.Features.Set(errorType); return Problem( title: "Bad Input", detail: "Divison by zero is not defined.", type: "https://en.wikipedia.org/wiki/Division_by_zero", statusCode: StatusCodes.Status400BadRequest ); } return Ok(Numerator / Denominator); } // /api/values3/squareroot/4 [HttpGet("{radicand}")] public IActionResult Squareroot(double radicand) { if (radicand < 0) { var errorType = new MathErrorFeature { MathError = MathErrorType.NegativeRadicandError }; HttpContext.Features.Set(errorType); return Problem( title: "Bad Input", detail: "Negative or complex numbers are not valid input.", type: "https://en.wikipedia.org/wiki/Square_root", statusCode: StatusCodes.Status400BadRequest ); } return Ok(Math.Sqrt(radicand)); } } // // To test unhandled exceptions [Route("api/[controller]/[action]")] [ApiController] public class Values4Controller : ControllerBase { // /api/values4/divide/1/2 [HttpGet("{Numerator}/{Denominator}")] public IActionResult Divide(double Numerator, double Denominator) { return Ok(Numerator/Denominator); } // /api/values4/squareroot/4 [HttpGet("{radicand}")] public IActionResult Squareroot(double radicand) { return Ok(Math.Sqrt(radicand)); } }