2013-02-13 2 views
0

Я сердцебиения API implemeted с помощью сервиса Spring REST:Как сделать заголовок Content-Type необязательным?

@RequestMapping(value = "heartbeat", method = RequestMethod.GET, consumes="application/json") 
public ResponseEntity<String> getHeartBeat() throws Exception { 
    String curr_time = myService.getCurrentTime();  
    return Util.getResponse(curr_time, HttpStatus.OK); 
} 

И MyService.java имеет ниже метод:

public String getCurrentTime() throws Exception { 
    String currentDateTime = null; 
    MyJson json = new MyJson(); 
    ObjectMapper mapper = new ObjectMapper().configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false); 

    try {   
     Date currDate = new Date(System.currentTimeMillis()); 
     currentDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(currDate);   
     json.setTime(currentDateTime);      

     ObjectWriter writer = mapper.writerWithView(Views.HeartBeatApi.class); 
     return writer.writeValueAsString(json);     
    } catch (Exception e) { 
     throw new Exception("Excpetion", HttpStatus.BAD_REQUEST);   
    } 
} 

Это работает, как ожидалось, но есть 2 проблемы:

  1. Когда я вызываю этот API, заголовок Content-Type является обязательным & Я хочу знать, как сделать этот заголовок необязательным.

  2. Как добавить заголовок «Принять», чтобы он мог поддерживать другой формат, такой как Google Protobuf?

Спасибо!

ответ

1

Если вы не хотите, чтобы Content-Type существовал и был «application/json», вы можете просто полностью опустить раздел потребления.

«Принять» доступно через значение «производит», а не «потребляет». Поэтому, если вы хотите поддержать приложение Google Protobuf OR/json, вы можете сделать это:

@Controller 
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json") 
@ResponseBody 
public ResponseEntity<String> getHeartBeat() throws Exception { 
    String curr_time = myService.getCurrentTime();  
    return Util.getResponse(curr_time, HttpStatus.OK); 
} 
Смежные вопросы