10

我想用 suave 为我的“公共”文件夹中的所有文件提供服务

在我的公众中,我有:

/index.html
/styles/main.css
/scripts/app.js
/images/*.(png|jpg)

我使用 homeFolder 吗?或者这是如何工作的?是否需要将公用文件夹复制到我的 bin 文件夹中的可执行文件旁边?代码片段将不胜感激。谢谢。

编辑:

解决方案如下所示:

open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful
open System.IO

let app = 
    choose [
        GET >=> choose
            [path "/" >=> OK "test" ; Files.browseHome]
        POST >=> choose
            [path "/foo" >=> OK "thanks"]
    ]

let myHomeFolder = Path.Combine(Directory.GetCurrentDirectory(), "public") 

let cfg = { 
    defaultConfig with
        homeFolder = Some(myHomeFolder)
    }

[<EntryPoint>]
let main argv = 
    printfn "%A" argv
    startWebServer cfg app
    System.Console.ReadLine() |> ignore
    0 // return an integer exit code
4

1 回答 1

11

我发现这也很难做到,因为它没有真正记录在案。我没有找到上面 Carsten 链接到的博客,所以在浏览了 Suave 源代码及其 GitHub 存储库中的示例后,我设法想出了这个:

open Suave
open Suave.Operators

let app =
    choose
        [ Filters.GET >=> choose

            [ Filters.path "/" >=> (
                  "My main page"
                  |> Successful.OK)

              Files.browseHome ] ] // <-- The important part

[<EntryPoint>]
let main x =
    Web.startWebServer Web.defaultConfig app |> ignore
    0

我使用browseHome它是因为这是一个控制台应用程序,我只想从 exe 目录中提供文件。我想你会想要使用browse源代码

以下是一些您可能会觉得有用的示例。

于 2016-01-28T09:52:11.800 回答