148 lines
3.7 KiB
C#
148 lines
3.7 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace ProblemDetailsWebApi.Controllers;
|
|
// <snippet_1>
|
|
[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));
|
|
}
|
|
}
|
|
// </snippet_1>
|
|
|
|
// <snippet>
|
|
[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));
|
|
}
|
|
|
|
}
|
|
// </snippet>
|
|
|
|
// <snippet3>
|
|
[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));
|
|
}
|
|
|
|
}
|
|
// </snippet3>
|
|
|
|
// 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));
|
|
}
|
|
}
|