Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为什么喷雾作为响应体返回正常?_Scala_Http_Routing_Spray - Fatal编程技术网

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响应。