STTP的基本使用(1):Request、Response
试试看 get 一下新技能:STTP with AKKA。
1)定义 request。
请求由不可变的数据结构 RequestT 来表示,其值可以由 sttp.client.clientRequest 来表示,并可通过它提供的各种方法(cookie, body, responseAs…)来细力度的来设定 reqeust 对象的数据(包括返回的 response 格式)。
2)发送请求。
为了发送请求,这里需要一个隐式对象 backend。核心的绝大部分工作都发生在 backend。比如把请求转为特定 backend 格式、打开 HTTP 连接、发送接收数据、把接收到的数据转为 STTP 的 response 格式等。
Backend 管理着连接池、处理 response 的线程池,根据 backend 的情况还支持 streaming 和 websockets。
请求可以同步发送,返回值类型为 Response[T]。
请求也可以异步发送,返回值类型为 Future[Response[T]]。Monix 这种 backend 的返回值则是 Task[Resonse[T]]。
关于更详细的如何使用 request,比如设置 cookie、认证、form、上传文件、proxy 等,可参考:https://sttp.readthedocs.io/en/latest/requests/basics.html
如何使用 AKKA 这样支持 streaming 的 backend,参考:
发送流:https://sttp.readthedocs.io/en/latest/requests/streaming.html
接收流:https://sttp.readthedocs.io/en/latest/responses/body.html#streaming
3)Responses
Response 是 case class Response[T]的一个实例,其中 T 是 response body 的 type。
如果 connection 出现问题,在同步的 backend 情况下 exception 会被返回,对于异步来说就是 failed future。 详见:https://sttp.readthedocs.io/en/latest/responses/exceptions.html
使用.body: T 方法来获取 response body。
Reference:
https://sttp.readthedocs.io/en/v2.0.0-rc13/requests/type.html