require 'sinatra'
get '/hi' do
"Hello World!"
end
import org.scalatra._ class ScalatraExample extends ScalatraServlet { get("/hi") { <h1>Hello World!</h1> } }
open System
open System.Web.Http
open System.Web.Http.SelfHost
open Newtonsoft.Json.Serialization
open Enku
let config = new HttpSelfHostConfiguration("http://localhost:9090/")
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver
<- CamelCasePropertyNamesContractResolver()
let route = Routing.route config
route "hi" <| fun _ ->
[
get, fun req -> async {
return Content.html "<h1>Hello World!</h1>" |> Response.Ok }
], fun req e -> Content.error e |> Response.InternalServerError
let server = new HttpSelfHostServer(config)
server.OpenAsync().Wait()
route "hi" <| fun _ -> [ get, fun _ -> async { return html "<h1>Hello World</h1>" |> Ok } ]
route "hi" <| fun _ -> [ get, fun _ -> async { return html "<h1>Hello World!</h1>" |> Ok }
post <|> put, fun _ -> async { return html "<h1>Thank You!</h1>" |> Ok }
]
let hiController req = let h1 text = html <| sprintf "<h1>%s</h1>" text [ get, fun _ -> async { return h1 "Hello World!" |> Ok } post, fun _ -> async { return h1 "Thank You!" |> Ok } ] route "hi" hiController
route "hi" <| fun _ ->
[
get, around [log] <| fun _ -> async {
return html "<h1>Hello World!</h1>" |> Ok }
]
たとえば、属性(に相当する関数)の合成
route "hi" <| fun _ -> [ get <|> ajax, fun _ -> async { return html "<h1>Hello World!</h1>" |> Ok } ]