最近、要求されたルートが既存のAPIエンドポイントや別の静的資産と一致しない場合は、バックエンドからファイル(たとえば、index.html
)を返す必要はありません。これは、react-router
とbrowserHistory
を使用すると特に便利です。キャッチオールまたはデフォルトルーティング
私はServantでこれにどのようにアプローチするのか少し困惑しています。
data Wombat = Wombat
{ id :: Int
, name :: String
} deriving (Eq, Show, Generic)
instance ToJSON Wombat
wombatStore :: [Wombat]
wombatStore =
[ Wombat 0 "Gertrude"
, Wombat 1 "Horace"
, Wombat 2 "Maisie"
, Wombat 3 "Julius"
]
wombats :: Handler [Wombat]
wombats = return wombatStore
wombat :: Int -> Handler Wombat
wombat wid = do
case find (\w -> Main.id w == wid) wombatStore of
Just x -> return x
Nothing -> throwE err404
type API =
"api" :> "wombats" :> Get '[JSON] [Wombat] :<|>
"api" :> "wombats" :> Capture "id" Int :> Get '[JSON] Wombat :<|>
Raw
api :: Proxy API
api = Proxy
server :: Server API
server = wombats
:<|> wombat
:<|> serveDirectory "static"
app :: Application
app = serve api server
main :: IO()
main = run 3000 app
私がしたい:404年代をインターセプトすると、移動するための方法かもしれないが、その後の進路時々APIは、合法的に404を発行する必要がありますここで私は実験に使用してきたもののようなものだ場合、私は不思議をしましたリクエストがAPIエンドポイントや静的ディレクトリ内のものと一致しない場合、HTML応答を送信する「デフォルトルート」を追加する方法についての例を見るのが大好きです。トイレポhere。
ありがとうございました。本当に助かりました! –