Skip to content

Commit 259ba25

Browse files
committed
Fixed: a duplicate trailing slash was rendered in Location header when request path ended with a slash. For example: /workItems/ => /workItems//1
1 parent d8d2248 commit 259ba25

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

Diff for: src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public virtual async Task<IActionResult> PostAsync([FromBody] TResource resource
207207
TResource? newResource = await _create.CreateAsync(resource, cancellationToken);
208208

209209
string resourceId = (newResource ?? resource).StringId!;
210-
string locationUrl = $"{HttpContext.Request.Path}/{resourceId}";
210+
string locationUrl = HttpContext.Request.Path.Add($"/{resourceId}");
211211

212212
if (newResource == null)
213213
{

Diff for: test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public async Task Sets_location_header_for_created_resource()
4949
}
5050
};
5151

52-
const string route = "/workItems";
52+
const string route = "/workItems/";
5353

5454
// Act
5555
(HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecutePostAsync<Document>(route, requestBody);
@@ -61,7 +61,7 @@ public async Task Sets_location_header_for_created_resource()
6161
httpResponse.Headers.Location.Should().Be($"/workItems/{newWorkItemId}");
6262

6363
responseDocument.Links.ShouldNotBeNull();
64-
responseDocument.Links.Self.Should().Be("http://localhost/workItems");
64+
responseDocument.Links.Self.Should().Be("http://localhost/workItems/");
6565
responseDocument.Links.First.Should().BeNull();
6666

6767
responseDocument.Data.SingleValue.ShouldNotBeNull();

0 commit comments

Comments
 (0)