How can I make a trailing slash optional on a Django Rest Framework SimpleRouter

Ryan Allen picture Ryan Allen · Sep 11, 2017 · Viewed 11.8k times · Source

The docs say you can set trailing_slash=False but how can you allow both endpoints to work, with or without a trailing slash?

Answer

Ryan Allen picture Ryan Allen · Sep 11, 2017

You can override the __init__ method of the SimpleRouter class:

from rest_framework.routers import SimpleRouter


class OptionalSlashRouter(SimpleRouter):

    def __init__(self):
        super().__init__()
        self.trailing_slash = '/?'

The ? character will make the slash optional for all available routes.