Skip to content

csae1152/FarmHandFinch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FarmHandFinch

Building Scala HTTPS API's with Finagle, Finch and Thrift.

Taken From the Finagle documentation at https://finagle.github.io/finch/

The following example creates an HTTP server (powered by Finagle) that serves the only endpoint POST /time. This endpoint takes a Locale instance represented as JSON in request body and returns a current Time for this locale.

build.sbt:

libraryDependencies ++= Seq( "com.github.finagle" %% "finch-core" % "9000", "com.github.finagle" %% "finch-circe" % "0.1.0", "io.circe" %% "circe-generic" % "0.9.0" )

import com.twitter.finagle.Http import com.twitter.util.Await import io.finch._ import io.finch.circe._ import io.finch.syntax._ import io.circe.generic.auto._

object Main extends App {

case class Locale(language: String, country: String) case class Time(locale: Locale, time: String)

def currentTime(l: java.util.Locale): String = java.util.Calendar.getInstance(l).getTime.toString

val time: Endpoint[Time] = post("time" :: jsonBody[Locale]) { l: Locale => Ok(Time(l, currentTime(new java.util.Locale(l.language, l.country)))) }

Await.ready(Http.server.serve(":8081", time.toService)) } What People Say? @mandubian on Twitter:

I think there is clearly room for great improvements using pure FP in Scala for HTTP API & #Finch is clearly a good candidate.

@tperrigo on Reddit:

I’m currently working on a project using Finch (with Circe to serialize my case classes to JSON without any boilerplate code – in fact, besides the import statements, I don’t have to do anything to transform my results to JSON) and am extremely impressed. There are still a few things in flux with Finch, but I’d recommend giving it a look.

About

Building HTTP API's with Finagle, Finch and Thrift.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages