Spring에서 ResponseBody 사용시 reponse header의 content-type을 설정 하는 방법입니다.
api를 구현하면서 parameter로 &response=xml 또는 &response=json 오면 그에맞는 content-type을 설정해서 보내게 됩니다.
@RequestMapping(value="/client/api", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> clientApi(@RequestParam Map<String,String> requestMap) throws Exception
{
HttpHeaders headers = new HttpHeaders();
String type = requestMap.get("response").toString(); // response parameter로 들어온 값 확인 (xml or json);
if(type.equals("xml"){
headers.add("Content-Type", "Application/xml");
}else if(type.equals("json"){
headers.add("Content-Type", "Applacation/json");
}
.
.
.
.
return new ResponseEntity<String>(message,headers,HttpStatus.CREATED);
// message = return message ex) xml -> <result>success</result> , json = {result:"success"} ....
}
타입을 ResponseEntity<String> 으로 설정한 후
HttpHeaders 선언, 리턴시 사용하고 싶은 Content-Type을 add 합니다.
리턴시 ResponseEntity<String>(String,headers,HttpStatus); 를 사용해 리턴합니다.