端点需要身份验证Rest API Spray

时间:2016-02-23 08:42:05

标签: scala spray

我想从This Rest API中消耗一些资源 但似乎我需要一些授权。实际上,作为初学者,我不知道如何使用Spray访问此端点。

Spray Client的一个简单示例:

val pipeline = sendReceive ~> unmarshal[GuildwarsApiResult]

  val responseFuture = pipeline {
    Get("https://api.guildwars2.com/v2/commerce/listings/46741")
  }

谢谢!

1 个答案:

答案 0 :(得分:0)

我最近看到很多想要使用GuilWars API的人提出的问题。最近是否创建了?

根据您的问题,您需要在documentation中为POST请求指定带有API令牌的HTTP标头。对于GET请求,您应该在URL中传递令牌。

This显示了如何创建和使用自定义http标头。

object ApiTokenHeader extends ModeledCustomHeaderCompanion[ApiTokenHeader] {
  def renderInRequests = false
  def renderInResponses = false
  override val name = "Authorization"
  override def parse(value: String) = Try(new ApiTokenHeader(value))
}
final class ApiTokenHeader(token: String) extends ModeledCustomHeader[ApiTokenHeader] {
  def renderInRequests = false
  def renderInResponses = false
  override val companion = ApiTokenHeader
  override def value: String = "Bearer " + token
}

并将其用作

val responseFuture = pipeline {
    Get("https://api.guildwars2.com/v2/commerce/listings/46741").withHeaders(ApiTokenHeader("55eec993e046c63bc8f486ee"))
  }

我没有编译它但它应该可以工作。