我在Spring启动应用程序中获得了以下@RestController:
@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);
}
}
当我尝试从restClient / RestedClient发送请求时(两个mozila插件)我收到以下错误:
{ "时间戳":1512129442019, "状态":415, "错误":"不支持的媒体类型", " message":"内容类型' text / plain; charset = UTF-8'不支持", "路径":" /费用/餐馆" }
这个错误表明终点不支持Json内容,但我做到了 把
consumes = MediaType.APPLICATION_JSON_VALUE
在@RequestMapping注释中
我错过了什么?
答案 0 :(得分:1)
如果这样发出请求:那么它将解决问题。
curl -X PUT -H 'Content-Type: application/json' -i http://localhost:8080/spring-rest/api/employees/500 --data '{
"name": "abc",
"email": "abc.a@gmail.com",
"salary": 10000
}'
我看到标题是正确的:headers = MediaType.APPLICATION_JSON_VALUE
但是在发出请求时,那时我们需要通知处理程序它是application / json mime类型。
答案 1 :(得分:0)
最新回应,但发布答案时我遇到了同样的问题,这可能对某人有用,因此我安装了Postman,然后将您的Content-Type更改为application / json
答案 2 :(得分:0)
如果您将html与ajax一起使用,请检查请求标头和有效负载。确保ajax具有以下字段
url : your url
type : 'post',
dataType: "json",
contentType: "application/json; charset=utf-8",
data : JSON.stringify( your payload )
如果ajax调用具有以下字段,请将其删除,然后重试
processData : false,
contentType : false,
答案 3 :(得分:-1)
这也很晚,但是在RESTClient(mozilla插件)中,您可以从“标题”下拉菜单中添加Content-Type:application / json。