As pointed out here, having a double slash in a URL is valid.
I have an ASP Net Core project that uses attribute routing, a controller named GroupController for handling operations on Groups and an action for PUTting RuleParts of a group, specified by its ImportId of type string.
[Route("/api/[controller]")]
public class GroupController : ControllerBase
{
[HttpPut("{groupImportId?}/ruleParts")]
public async Task<IActionResult> PutRuleParts(string groupImportId, [FromBody]List<RulePartDto> ruleParts)
{
return null; //actual code ommitted for brevity
}
}
A URL like http://localhost/api/group/groupImportId/ruleParts matches as expected.
I would expect that null groupImportIds, i.e. URLs like http://localhost/api/group//ruleParts would call that same action, since the groupImportId route parameter has been marked as optional. However, when trying to call this URL, I get a 404 error and the action is not hit.
Is there a possibility to match an empty URL path segment in ASP Net Core?