Skip to content

Commit 4339cc4

Browse files
author
Bart Koelman
committed
Fixed: do not intercept exceptions thrown from non-json:api requests
1 parent 485b2bd commit 4339cc4

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

src/Examples/JsonApiDotNetCoreExample/Controllers/Restricted/ReadOnlyController.cs

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
1+
using JsonApiDotNetCore.Configuration;
12
using JsonApiDotNetCore.Controllers;
3+
using JsonApiDotNetCore.Services;
4+
using JsonApiDotNetCoreExample.Models;
25
using Microsoft.AspNetCore.Mvc;
6+
using Microsoft.Extensions.Logging;
37

48
namespace JsonApiDotNetCoreExample.Controllers.Restricted
59
{
6-
[Route("[controller]")]
10+
[DisableRoutingConvention, Route("[controller]")]
711
[HttpReadOnly]
8-
public class ReadOnlyController : ControllerBase
12+
public class ReadOnlyController : BaseJsonApiController<Article>
913
{
14+
public ReadOnlyController(
15+
IJsonApiOptions jsonApiOptions,
16+
ILoggerFactory loggerFactory,
17+
IResourceService<Article> resourceService)
18+
: base(jsonApiOptions, loggerFactory, resourceService)
19+
{ }
20+
1021
[HttpGet]
1122
public IActionResult Get() => Ok();
1223

@@ -20,10 +31,17 @@ public class ReadOnlyController : ControllerBase
2031
public IActionResult Delete() => Ok();
2132
}
2233

23-
[Route("[controller]")]
34+
[DisableRoutingConvention, Route("[controller]")]
2435
[NoHttpPost]
25-
public class NoHttpPostController : ControllerBase
36+
public class NoHttpPostController : BaseJsonApiController<Article>
2637
{
38+
public NoHttpPostController(
39+
IJsonApiOptions jsonApiOptions,
40+
ILoggerFactory loggerFactory,
41+
IResourceService<Article> resourceService)
42+
: base(jsonApiOptions, loggerFactory, resourceService)
43+
{ }
44+
2745
[HttpGet]
2846
public IActionResult Get() => Ok();
2947

@@ -37,10 +55,17 @@ public class NoHttpPostController : ControllerBase
3755
public IActionResult Delete() => Ok();
3856
}
3957

40-
[Route("[controller]")]
58+
[DisableRoutingConvention, Route("[controller]")]
4159
[NoHttpPatch]
42-
public class NoHttpPatchController : ControllerBase
60+
public class NoHttpPatchController : BaseJsonApiController<Article>
4361
{
62+
public NoHttpPatchController(
63+
IJsonApiOptions jsonApiOptions,
64+
ILoggerFactory loggerFactory,
65+
IResourceService<Article> resourceService)
66+
: base(jsonApiOptions, loggerFactory, resourceService)
67+
{ }
68+
4469
[HttpGet]
4570
public IActionResult Get() => Ok();
4671

@@ -54,10 +79,17 @@ public class NoHttpPatchController : ControllerBase
5479
public IActionResult Delete() => Ok();
5580
}
5681

57-
[Route("[controller]")]
82+
[DisableRoutingConvention, Route("[controller]")]
5883
[NoHttpDelete]
59-
public class NoHttpDeleteController : ControllerBase
84+
public class NoHttpDeleteController : BaseJsonApiController<Article>
6085
{
86+
public NoHttpDeleteController(
87+
IJsonApiOptions jsonApiOptions,
88+
ILoggerFactory loggerFactory,
89+
IResourceService<Article> resourceService)
90+
: base(jsonApiOptions, loggerFactory, resourceService)
91+
{ }
92+
6193
[HttpGet]
6294
public IActionResult Get() => Ok();
6395

src/JsonApiDotNetCore/Middleware/DefaultExceptionFilter.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using JsonApiDotNetCore.Extensions;
12
using Microsoft.AspNetCore.Mvc;
23
using Microsoft.AspNetCore.Mvc.Filters;
34

@@ -17,12 +18,15 @@ public DefaultExceptionFilter(IExceptionHandler exceptionHandler)
1718

1819
public void OnException(ExceptionContext context)
1920
{
20-
var errorDocument = _exceptionHandler.HandleException(context.Exception);
21-
22-
context.Result = new ObjectResult(errorDocument)
21+
if (context.HttpContext.IsJsonApiRequest())
2322
{
24-
StatusCode = (int) errorDocument.GetErrorStatusCode()
25-
};
23+
var errorDocument = _exceptionHandler.HandleException(context.Exception);
24+
25+
context.Result = new ObjectResult(errorDocument)
26+
{
27+
StatusCode = (int) errorDocument.GetErrorStatusCode()
28+
};
29+
}
2630
}
2731
}
2832
}

0 commit comments

Comments
 (0)