2014-11-11 6 views
7

Ho un endpoint primavera per il mio REST servizi web app che voglio restituire una stringa:Come restituire una stringa come JSON valido dall'app Web di Spring?

"Unauthorized: token is invalid" 

Ma il mio javascript sul front-end soffoca su questo:

JSON.parse("Unauthorized: token is invalid") //Unexpected token U 

Come faccio fai in modo che la mia app restituisca una stringa JSON valida? Ecco il mio codice corrente:

@RequestMapping(value="/401") 
public ResponseEntity<String> unauthorized() { 
    return new ResponseEntity<String>("Unauthorized: token is invalid", HttpStatus.UNAUTHORIZED); 
} 
+0

restituire un oggetto con una proprietà di stringa – Bart

risposta

13

Restituire una mappa.

Map<String,String> result = new HashMap<String,String>(); 

result.put("message", "Unauthorized..."); 

return result; 

Non è necessario restituire un ResponseEntity, si può tornare direttamente un POJO o la raccolta. Aggiungi @ResponseBody al metodo del gestore se desideri restituire un POJO o una raccolta.

Inoltre, direi che è meglio utilizzare forward su redirect per errori.

+5

Forse Collections.singletonMap ("messaggio", "non autorizzato") ';' farebbe essere meglio in questo caso poiché è necessario restituire solo un messaggio. Ad ogni modo +1 –

6

@Neil presenta un'alternativa migliore a quello che stai cercando di realizzare.

In risposta alla domanda, tuttavia, siete vicini.

Il codice modificato di seguito dovrebbe produrre una risposta valida JSON

@RequestMapping(value="/401") 
public ResponseEntity<String> unauthorized() { 

    String json = "[\"Unauthorized: token is invalid\"]"; 
    HttpHeaders responseHeaders = new HttpHeaders(); 
    responseHeaders.setContentType(MediaType.APPLICATION_JSON); 
    return new ResponseEntity<String>(json, responseHeaders, HttpStatus.UNAUTHORIZED); 
} 
Problemi correlati