don't you have the 2 options to have a redirect or to show the canonical url? if you return Response objects, will you not need to duplicate this code for the canonical url? maybe the calling code could create the redirect response object?