如何在 Elixir Phoenix 框架中指定 URL 中参数的格式?

Kur*_*ama 3 elixir phoenix-framework

如何指定 URL 中某些参数的格式?例如,对于这个 URL:my_website.com/users/123我希望URL 中的user_id参数是整数和正数。

我怎样才能做到这一点?是web/routes.ex通过正则表达式完成的吗?

Dog*_*ert 5

由于路由器的实现方式,这在凤凰城的路由器中是不可能的——它只能将路径段(介于 之间的文本/)与精确的常量字符串、具有常量前缀的字符串或任何字符串进行匹配。您可以在控制器操作中手动检查它,如下所示:

def show(conn, %{"user_id" => user_id}) do
  case Integer.parse(user_id) do
    {user_id, ""} when user_id > 0 ->
      # user_id is valid positive integer
      text(conn, "ok")
    _ ->
      # user_id was either not an integer or a negative integer
      text(conn, "not ok")
  end
end
Run Code Online (Sandbox Code Playgroud)