2011-12-01 25 views
6

Sto creando un sito web RESTful con Spring 3.0. Sto usando ContentNegotiatingViewResolver così come i convertitori di messaggi HTTP (come MappingJacksonHttpMessageConverter per JSON, MarshallingHttpMessageConverter per XML, ecc.). Sono in grado di ottenere il contenuto XML con successo, se uso il suffisso .xml nell'ultimo URL e lo stesso in caso di JSON con suffisso .json nell'URL.XML/JSON POST con RequestBody in Spring REST Controller

Ottenere i contenuti XML/JSON dal controller non produce alcun problema per me. Ma, , come posso POST XML/JSON con il corpo della richiesta nello stesso metodo Controller?

Ad es.

risposta

11

È consigliabile non utilizzare una vista per restituire JSON (o XML), ma utilizzare l'annotazione @ResponseBody. Se il dipendente è quello che dovrebbe essere restituito, la primavera e l'MappingJacksonHttpMessageConverter sarà automatico Tradurre il vostro oggetto Employee a JSON, se si utilizza una definizione di metodo e l'attuazione in questo modo (si noti, non testato):

@RequestMapping(method=RequestMethod.POST, value="/addEmployee") 
    @ResponseBody 
    public Employee addEmployee(@RequestBody Employee e) { 
    Employee created = employeeDao.add(e); 
    return created; 
    } 
+0

Grazie per reply.I' Lo proverò e tornerò presto :) –

+0

Stoffer, ho provato la strada, hai risposto. Ma quando ho provato a postare qualsiasi contenuto XML/JSON nel corpo della richiesta al metodo controller. sto ottenendo l'eccezione da lì cioè ** HTTP Stato 400 - Tipo di contenuto 'text/plain; charset = UTF-8' non supportato ** È perché sto usando sia ContentNegotiatingViewResolver e Http Messaggio convertitori ?? o c'è qualche altra ragione dietro questo. –

+4

Convertitori nel registro Spring per determinati tipi di contenuto (per il corpo della richiesta) e accettano (per la risposta). Per json è 'application/json' e alcuni altri. Per XML è 'application/xml' e alcuni altri. Assicurati che il tuo client invii "content-type: application/json" e "accept: application/json" e funzionerà. –

Problemi correlati