2015-09-09 4 views
0

По какой-то причине мой код не разрешит этот символ «responseWithMediaType», несмотря на наличие всех необходимых импортов. Я довольно новичок и в спрее, и в scala - так, возможно, что-то неясно?Не удается разрешить символ responseWithMediaType - Scala/Spray/Json

import spray.http.MediaTypes._ 
import spray.json._ 
import DefaultJsonProtocol._ 
..... 
trait Service extends CassandraSpec with UsersService { 
    implicit val system: ActorSystem 

    implicit def executor: ExecutionContextExecutor 

    implicit val materializer: Materializer 
    implicit val timeout: Timeout 
    implicit val jsonFormatUsers = jsonFormat5(Users) 
    implicit val jsonFormatAllUsers = List(jsonFormat5(Users)) 
    ..... 

pathPrefix("users") { 
    (get & path(Segment)) { email => 
     respondWithMediaType(MediaTypes.`application/json`) { 
     service.getByUsersEmail(email) 
     } 
    } 
    get { 
     // GET /users 
     path(Rest) { 
     respondWithMediaType(`application/json`) { 
      service.getAllUsers() 
     } 
     } 
    } ~ 
    post { 
     entity(as[Users]) { users: Users => 
      respondWithMediaType(`application/json`) { 
      service.saveOrUpdate(users) 
      } 
     } 
     } 
    } 

}

ответ

0

Как я понимаю, вы хотите, чтобы отправить обратно JSON, то вам не нужно устанавливать тип содержимого, окрашенная JSON будет делать это для вас, заменить respondWithMediaType с complete способом, как это:

post { 
     entity(as[Users]) { users: Users => 
      complete { 
      service.saveOrUpdate(users) 
      } 
     } 
     } 

и убедитесь, что вы получили весь импорт спрей JSon, подробнее here

+0

Но когда я делаю это, я получаю возврат ошибка несоответствия типа, где он ожидает ToResponseMarshallable, фактическое будущее [Option [Users]]. Означает ли это, что он не собирает неявное преобразование или что-то еще? –

+0

Удостоверьтесь, что у вас есть этот импорт «import spray.httpx.SprayJsonSupport._» он предоставляет сериализаторы и десериализаторы для всех примитивов, коллекций .. и удаляет «implicit val jsonFormatAllUsers = List (jsonFormat5 (Users))» – grotrianster

+0

Я сделал оба , все еще не узнает его. К сожалению, он не позволит мне публиковать весь код здесь с тех пор, пока он слишком длинный. Я чувствую себя застрявшим. –

Смежные вопросы