私はSuaveを使用してWebサーバーを作成することを研究しています。現在、GETリクエストでzipファイルを送信しようとしています。私はアプリケーションからファイルを送信することに成功しましたが、SumanのFiles
モジュールの機能に応じて、Postmanでリクエストを行うときに受け取るファイルの名前は "response"または "response.html"です。つまり、手動でファイル名を.zipに変更すると、通常の.zipファイルのようにファイルを開いて解凍できます。つまり、実際にダウンロードされたファイル名が問題です。以下のコードは私が今持っているものです。正しい名前のSuaveで(zip)ファイルを送信する
open JSON
open System
open System.Threading
open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful
open Suave.Web
open System.IO
open Suave.Writers
let sampleJsonPath = @"C:\VS Projects\Research\Sample.json"
let sampleZipPath = @"C:\VS Projects\Research\Sample.zip"
let getJson() =
File.ReadAllText(sampleJsonPath)
[<EntryPoint>]
let main argv =
let cts = new CancellationTokenSource()
let mimeTypes =
defaultMimeTypesMap
@@ (function | ".zip" -> createMimeType "compression/zip" false | _ -> None)
let config =
{ defaultConfig with
mimeTypesMap = mimeTypes
cancellationToken = cts.Token
}
let app =
choose
[ GET >=> choose
[ path "/hello" >=> OK "Hello GET"
path "/jsonString" >=> OK (getJson())
path "/jsonFile" >=> warbler (fun _ -> getJson() |> JSON)// for only on startup: ... >=> (getJson() |> JSON)
path "/zip" >=> Files.sendFile sampleZipPath false
path "/goodbye" >=> OK "Goodbye GET" ]
POST >=> choose
[ path "/hello" >=> OK "Hello POST"
pathScan "/content/%d" (fun param -> OK (sprintf "Found integer:\n%d" param))
pathScan "/content/%s" (fun param -> OK (sprintf "Found content:\n%s" param))
path "/goodbye">=> OK "Goodbye POST" ]
RequestErrors.BAD_REQUEST "Unknown request encountered"
]
let listening, server = startWebServerAsync config app
Async.Start(server, cts.Token)
printfn "Ready to receive requests"
Console.ReadKey true |> ignore
cts.Cancel()
0 // return an integer exit code
Google検索ではこれまでに何も使用できませんでした。私はまた、Files.browseFile sampleZipPath "Sample.zip"
(これも "response.html"という名前のファイル)とFiles.file sampleZipPath
(ファイル名が "応答")を含むSuaveのFiles
モジュールの他の多くの機能を試してみましたが、
送信するファイルの名前を指定するにはどうすればよいですか?
これはPostmanの問題です。 https://github.com/postmanlabs/postman-app-support/issues/2082 – rmunn