Spring Boot内容类型' multipart / form-data; boundary = --------------------------#; charset = UTF-8&# 39;不支持

时间:2018-03-12 00:17:10

标签: java spring-boot

我是Spring的新手......我有一个Spring Boot API应用程序,当Content-Type设置为application / json时,我的所有方法(POST,GET等)都适用于Postman可以发送和接收JSON。

但是,我真的希望我的方法也能在浏览器中接受GET或POST。当我使用浏览器执行GET时,API返回INTERNAL_SERVER_ERROR。我创建了一个小表单并尝试POST到我的API,但后来我得到了UNSUPPORTED_MEDIA_TYPE:内容类型' multipart / form-data; boundary = ---------------- ---------- 802438220043016845671644;字符集= UTF-8'不支持

这是@RestController中的两个方法:

@RequestMapping(method = RequestMethod.POST, value = {"","/"})
public ResponseEntity<MyModel> createModel(@Valid @RequestBody MyModelDto modelDto) {
    MyModel model = modelService.createModel(modelDto);
    URI createdModelUrl = ServletUriComponentsBuilder.fromCurrentRequest().path("/{identifier}")
            .buildAndExpand(model.getIdentifier()).normalize().toUri();
    return ResponseEntity.created(createdModelUrl).build();

@RequestMapping(method = RequestMethod.GET, value = "/{identifier}")
public Resource<MyModel> getByIdentifier(@PathVariable("identifier") String identifier) {
    MyModel model = modelService.getByIdentifier(identifier);
    Resource<MyModel> resource = new Resource<>(model);
    return resource;
}

如果有任何其他有助于展示的代码,请告知我们,我会更新该主题。

2 个答案:

答案 0 :(得分:0)

在createModel方法中,请将@ModelAttribute用作MyModelDto参数,而不是@RequestBody。

答案 1 :(得分:0)

您可以使用可以尝试的以下方法,

在“ @RequestMapping”中设置消耗块。

like,@RequestMapping(value =“ / abc”,消耗=“ multipart / form-data”,method = HTTPMethod.POST“)

使用@Multipart批注和文件对象作为@Part批注

使用@RequestPart代替@RequestBody。