Content type 'text/plain;charset=UTF-8' not supported error in spring boot inside RestController class

53,382

Solution 1

Late response but I had the same problem posting the answer it might be useful to someone so I installed Postman and then just change your Content-Type to application/json

Solution 2

If the request is made like this: then it will resolve the issue.

curl -X PUT -H 'Content-Type: application/json' -i http://localhost:8080/spring-rest/api/employees/500 --data '{
  "name": "abc",
  "email": "[email protected]",
  "salary": 10000
}'

I see the headers are proper: headers = MediaType.APPLICATION_JSON_VALUE
but when the request is made, at that time we need to inform the handler that its a application/json mime type.

Solution 3

This is late too, but in RESTClient(Mozilla addon), you can add Content-Type: application/JSON from the Headers dropdown menu and even at the response side change it to JSON format

Share:
53,382
nadavgam
Author by

nadavgam

Updated on December 04, 2020

Comments

  • nadavgam
    nadavgam over 3 years

    I got the following @RestController inside a spring boot application :

    @Data
    @RestController
    public class Hello {
    
        @Autowired
        private ResturantExpensesRepo repo;
    
        @RequestMapping(value = "/expenses/restaurants",method = RequestMethod.POST,consumes =MediaType.APPLICATION_JSON_VALUE ,
                headers = MediaType.APPLICATION_JSON_VALUE)
        @ResponseBody
        public void hello(@RequestBody ResturantExpenseDto dto)
        {
            Logger logger = LoggerFactory.getLogger("a");
            logger.info("got a request");
    
            ResturantExpenseEntity resturantExpenseEntity = new ResturantExpenseEntity();
            resturantExpenseEntity.setDate(new Date(System.currentTimeMillis()));
            resturantExpenseEntity.setName(dto.getName());
            resturantExpenseEntity.setExpense(dto.getExpense());
            repo.save(resturantExpenseEntity);
        }
    }
    

    When I try to send request from restClient/RestedClient (both addons of mozila) I get the following error :

    { "timestamp": 1512129442019, "status": 415, "error": "Unsupported Media Type", "message": "Content type 'text/plain;charset=UTF-8' not supported", "path": "/expenses/restaurants" }

    This eror states that the end point doesnt support Json content,But I did put

    consumes =MediaType.APPLICATION_JSON_VALUE

    inside @RequestMapping annotation

    What am I missing?