2016-01-27 10 views
8

mi piacerà a disposizione tutti i file nella mia cartella 'pubblica' con soaveSuave servire i file statici

Dentro il mio pubblico che ho:

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

si usa un homeFolder? O come funziona? La cartella pubblica deve essere copiata accanto all'eseguibile nella mia cartella bin? Uno snippet di codice sarebbe molto apprezzato. Grazie.

Edit:

La soluzione si presenta così:

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 
+0

[il documento dovrebbe contenere tutto ciò che hai chiesto] (https://suave.io/files.html) – Carsten

+2

Mi spiace https://suave.io/files.html non aiuta davvero tanto – user1613512

+0

ok ok - un'altra breve domanda a google/bing yields [this] (http://blog.geist.no/suave-io-introduction-and-example-part-3-requests-and-routing/) .... meglio? – Carsten

risposta

10

ho trovato questo molto difficile da fare anche in quanto non è in realtà documentata. Non ho trovato il blog che Carsten legata alla sopra così sono riuscito a venire con questo dopo pesca a strascico attraverso il codice sorgente Suave e gli esempi nel suo repository 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 

Ho usato browseHome perché questa è una console app e volevo solo servire i file dalla directory exe. Penso che vorrai usare browse (source code)

E here are some examples potresti trovare utile.

+1

Grazie a ciò, ho scoperto che la mia home directory ha bisogno di un percorso assoluto. – user1613512