Scala 为什么喷雾作为响应体返回正常?
当我创建这样的喷雾路由器时:Scala 为什么喷雾作为响应体返回正常?,scala,http,routing,spray,Scala,Http,Routing,Spray,当我创建这样的喷雾路由器时: path("test") { get { complete { StatusCodes.OK } } } 并发送我收到的简单get请求: HTTP/1.1 200 OK Server: spray-can/1.3.1 Date: Mon, 06 Jul 2015 11:
path("test") {
get {
complete
{
StatusCodes.OK
}
}
}
并发送我收到的简单get请求:
HTTP/1.1 200 OK
Server: spray-can/1.3.1
Date: Mon, 06 Jul 2015 11:34:54 GMT
Content-Type: text/plain; charset=UTF-8
Content-Length: 2
OK
为什么在正文中返回
OK
?这是一个bug吗?不,我认为这不是bug。
Spray假设“complete”语句的主体是响应主体,它将找到从主体返回类型到Spray可以序列化的类型的隐式转换,显然它可以找到状态代码的这种转换
要指定特定的状态代码,应使用
complete(status: StatusCode[, value: T])
在你的例子中
path("test") {
get {
complete(StatusCodes.OK)
}
}
要对此进行扩展:
complete(status)
使用来自statuscode的marshaller,它会自动为实体使用defaultText
。正如这里所暗示的,您可以使用complete(StatusCodes.OK,HttpEntity.Empty)
甚至complete(HttpEntity.Empty)
来创建一个成功的200响应。