2015-01-29 15 views
9

Mam trasę POST Spray, a żądanie zawiera ciało JSON (content-type "application/json"). Chcę sposobu, aby wyodrębnić surowego JSON z tego żądania na mojej trasie.Wyodrębnianie surowego JSON jako ciąg wewnątrz Sprayu Trasa POST

Dla http://host:port/somepath/value1 Chcę uzyskać wyciąg ciało pocztowe jako TextMsgResponse. Ale dla http://host:port/somepath/value2 Chcę ekstraktu organizmu po prostu jako surowiec Json (np { "name":"Jack", "age":30 }

val myRoute = path("somepath"/Segment) { pathSegment => 
post { //use only POST requests 
    pathSegment match { 
    case "value1" => 
     entity(as[TextMsgResponse]) { textMsg => 
     complete { 
      //do something with the request 
      StatusCodes.OK 
     } 
     } 
    case "value2" => { 
     //here is I want to extract the RAW JSON from the request   
     } 
    } 
    } 
+1

Czy próbowałeś 'podmiot (jako [Array [Byte]]) 'lub' entity (jako [String]) '? – cmbaxter

+0

Tak i oba z nich nie działają. –

Odpowiedz

8

Można użyć dyrektywy extract jako

def rawJson = extract { _.request.entity.asString} 
    . 
    . 
    . 
case "value2" => rawJson{ json =>// use the json 
    } 
Powiązane problemy