In the previous post “ServiceStack: New API – F# Sample (Web Service out of a web server)” we implemented a self-hosted service with ServiceStack. That service has multiple out-of-the-box endpoints, including a REST one.
The next interesting question is “How to call this service?”(preferably in a strongly-typed way). The answer is simple, ServiceStack team have already made this for us. We can reuse types that designed for server-side code to make client code prettier. ServiceStack provides a list of different service clients for client applications.
open System
open ServiceStack.ServiceHost
open ServiceStack.ServiceClient.Web
[<CLIMutable>]
type HelloResponse = { Result:string }
[<Route("/hello")>]
[<Route("/hello/{Name}")>]
type Hello() =
interface IReturn<HelloResponse>
member val Name = "" with get, set
let baseUri = "http://localhost:8080/"
// Option 1 : Json call
let jsonCall() =
let client = new JsonServiceClient(baseUri)
client.Post(Hello(Name="json"))
// Option 2 : Xml call
let xmlCall() =
let client = new XmlServiceClient(baseUri)
client.Post(Hello(Name="xml"))
// Option 3: Jsv call
let jsvCall() =
let client = new JsvServiceClient(baseUri)
client.Post(Hello(Name="jsv"))
[<EntryPoint>]
let main args =
printfn "Json call : %A" (jsonCall())
printfn "Xml call : %A" (xmlCall())
printfn "Jsv call : %A" (jsvCall())
Console.ReadLine() |> ignore
0
Discover more from Sergey Tihon's Blog
Subscribe to get the latest posts sent to your email.
2 thoughts on “ServiceStack: F# Client Application”