0

SpringRESTサービスを使用して実装されたハートビートAPIがあります。

@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などの他の形式をサポートできるように「Accept」ヘッダーを追加するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

Content-Type が存在する必要がなく、"application/json" である必要がない場合は、consumes セクションを完全に省略できます。

「受け入れる」は、「消費する」のではなく、「生産する」という値を介して利用できます。したがって、Google Protobuf OR application/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);
}
于 2013-02-13T22:36:06.637 に答える