I am working on an API that will primary return JSON but I also want it to return XML if the client prefers to work with XML.
My controller is included below.
I can get JSON and XML to return for http://ift.tt/1wo44cp
However http://ift.tt/1wo44cp work with JSON only, XML returns HttpMediaTypeNotAcceptableException: could not find acceptable representation.
Is this because I'm trying to serialize a List<> to XML? What is the solution to work around?
package net.jkratz.bloodpressure.api.controller;
import net.jkratz.bloodpressure.api.model.Gender;
import net.jkratz.bloodpressure.api.repository.GenderRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.inject.Inject;
import java.util.List;
@RestController
@RequestMapping(value = "/gender", produces = {"application/json","application/xml"})
public class GenderController {
@Inject
GenderRepository genderRepository;
private Logger logger = LoggerFactory.getLogger(getClass());
@RequestMapping(value = {"","/"}, method = RequestMethod.GET)
public ResponseEntity<List<Gender>> getGenders(@RequestHeader("Accept") String acceptHeader) {
logger.info("Serving resource for Accept header: {}", acceptHeader);
List<Gender> genders = genderRepository.findAll();
return new ResponseEntity<>(genders, HttpStatus.OK);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ResponseEntity<Gender> getGender(@PathVariable("id") Integer id, @RequestHeader("Accept") String acceptHeader) {
logger.info("Serving resource for Accept header: {}", acceptHeader);
return new ResponseEntity<>(genderRepository.findOne(id), HttpStatus.OK);
}
}
No comments:
Post a Comment