Vytvárajem svoju prvú aplikáciu s AKKA-http. V súčasnosti používam spray-json na zápis objektu do json Keď som vytvoril požiadavku GET, všetko funguje dobre, ale skúšala som požiadavku POST a nasledujúca chyba ukazuje:
Error:(55, 26) could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[nl.quintor.model.Employee]
entity(as[Employee]) { request =>
Toto je moja hlavná trieda:
object Main extends App with Routes {
implicit val system = ActorSystem("system")
implicit val executor: ExecutionContext = system.dispatcher
implicit val materializer: ActorMaterializer = ActorMaterializer()
override val slickboard = createSlickboard
Http().bindAndHandle(routes, httpInterface, httpPort)
private def createSlickboard: ActorRef =
system.actorOf(Slickboard.props(system), applicationName)
}
}
Definoval som moje trasy nasledujúcim znakom:
trait Routes extends CORSSupport with Protocols {
val slickboard: ActorRef
implicit val timeout = Timeout(5 seconds)
val routes =
corsHandler {
pathPrefix("employees") {
pathEnd {
get {
complete {
(slickboard ? GetAllEmployees).mapTo[HttpResponse]
}
}
}
} ~
pathPrefix("employee") {
path(IntNumber) { id =>
get {
complete {
(slickboard ? GetEmployeeById(id)).mapTo[HttpResponse]
}
} ~
post {
decodeRequest {
entity(as[Employee]) { request =>
complete {
request.toString()
}
}
}
}
}
}
}
}
Definoval som môj protokol rovnako ako odporúčaný sprej:
trait Protocols extends DefaultJsonProtocol {
implicit val employeeFormat = jsonFormat8(Employee.apply)
}
Trieda, ktorú sa snažím previesť na json, je nasledujúca:
case class Employee(ID: Int, firstname: String, lastname: String, street: String, zipCode: String, city: String, phoneNumber: String, image: String)
Snažil som sa nájsť viaceré riešenia v pretečení zásobníka, ale žiadny z nich v skutočnosti nefunguje.
Mohol by mi niekto pomôcť s týmto problémom?
odpovede:
0 pre odpoveď č. 1Mám podozrenie, že potrebujete
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._