scalaplayframeworkplay-ws

Trying To Understand Which Play Library To Use


What is the difference between the following libraries:

libraryDependencies += "com.typesafe.play" %% "play-ahc-ws-standalone" % "LATEST_VERSION"

and

libraryDependencies += "com.typesafe.play" %% "play-ahc-ws" % "LATEST_VERSION"

I am just trying to figure which is the correct one to use. What I did was to create a Play module in a separate library and I want to inject that into a Play application. But when I used the first library listed above, it only offers a StandaloneWSClient. When I injected that into a Play application it couldn't bind an implementation to it. But when I switched the second library, it offers a WSClient which the Play application could find an implementation to bind to as it already has one which you can specify in the build.sbt definition ie ws.


Solution

  • Within Play project you should use play-ahc-ws which is usually added like so

    libraryDependencies += ws
    

    The ws value comes from Play's sbt plugin

    addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")
    

    On the other hand, play-ahc-ws-standalone is a HTTP client in its own right which can be used outside Play projects, just how one could use, for example, scalaj-http or requests-scala HTTP clients which are in no way aware of Play.

    The difference is documented by Play 2.6 Migration Guide.