当Get方法在GetController中工作时,为什么post方法不起作用?

问题描述 投票:0回答:1

我的GET方法与Json工作正常,但是当我使用post方法时总是出错。我使用了下面的代码。

RestController

@RestController
@RequestMapping("/api")
public class AjaxApiRestController {

    private static final String[] province = {
            "Aragon",
            "Catalonia"
    };

    private static final String[][] district =  {
            {"Barbastro","Fraga","Jaca"},
            {"Granollers","Vich","Barcelona"}
    };

    @GetMapping("/ajax/district") //it working!
    public List<String> getDistrict(@RequestBody Province province){
        for(int i=0; i<this.province.length; i++){
            if(this.province[i].equals(province.getProvince())){
                return Arrays.asList(district[i]);
            }
        }
        return null;
    }

    @PostMapping("/ajax/district") //it's not working!
    public List<String> getDistrictPost(@RequestBody Province province){
        for(int i=0; i<this.province.length; i++){
            if(this.province[i].equals(province.getProvince())){
                return Arrays.asList(district[i]);
            }
        }
        return null;
    }
}

class Province{

    private String province;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }
}

我用Postman检查RestController

GET方法中:通过发送此命令,我得到以下输出。

{
    "province":"Catalonia"
}

GET输出:

[
    "Granollers",
    "Vich",
    "Barcelona"
]

POST方法中:通过发送此命令,我得到以下输出。

{
    "province":"Catalonia"
}

POST输出:

{
"timestamp": "2019-02-25T08:52:10.850+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/ajax/district"
}

因此,当我们检查代码时,GET方法有效,POST方法不起作用。当Get方法有效时,为什么post方法不起作用?代码中是否有错误,我看不到?有人可以提供帮助吗?

spring-boot postman spring-restcontroller
1个回答
0
投票

为什么要尝试使用两种(POST,GET)方法来实现相同的功能。使用带有GET方法的@RequestBody不是一个好习惯。您是否添加了Spring安全依赖性和配置?

如果是,那么添加方法名称可能会帮助您,如下所示。 .antMatchers(HttpMethod.POST, “/ yourRequestURL”)。permitAll()

© www.soinside.com 2019 - 2024. All rights reserved.