sttp is a family of Scala HTTP-related projects, and currently includes:
- sttp client: The Scala HTTP client you always wanted!
- sttp tapir: Typed API descRiptions
- sttp model: this project. Simple Scala HTTP model. Used by sttp client & sttp tapir
Quickstart with sbt
Add the following dependency:
"com.softwaremill.sttp.model" %% "core" % "1.5.5"
sttp model is available for Scala 2.11, 2.12, 2.13, 3.0.0, Scala.JS and Scala Native.
Available model classes include:
- body fragments:
- header values:
Most classes contain both serialisation & parsing functionality, following these conventions:
.toStringreturns a representation of the model class in a format as in an HTTP request/response. For example, for an uri this will be
http://..., for a header
[name]: [value], etc.
[SthCompanionObject].parse(serialized: String): Either[String, Sth]: returns an error message, or an instance of the model class
[SthCompanionObject].unsafeApply(values): creates an instance of the model class; validates the input values and in case of an error, throws an exception. An error could be e.g. that the input values contain characters outside the allowed range
[SthCompanionObject].safeApply(...): Either[String, Sth]: same as above, but doesn't throw exceptions. Instead, returns an error message, or the model class instance
[SthCompanionObject].apply(...): Sth: creates the model type, without validation, and without throwing exceptions
The docs for sttp client contain documentation for the model classes: overview, uri interpolator.
If you have a question, or hit a problem, feel free to ask on our gitter channel!
Or, if you encounter a bug, something is unclear in the code or documentation, don’t hesitate and open an issue on GitHub.
Building & testing the scala-native version
By default, sttp-native will not be included in the aggregate build of the root project. To include it, define the
STTP_NATIVE environmental variable before running sbt, e.g.:
You might need to install some additional libraries, see the scala native documentation site.
FAQ: Encoding & decoding URI components
We offer commercial support for sttp and related technologies, as well as development services. Contact us to learn more about our offer!
Copyright (C) 2019-2021 SoftwareMill https://softwaremill.com.