为什么Get方法在RestController中起作用,post方法却不起作用?
Why does not the post method work when the Get method works in RestController?
我的 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"
}
获取输出:
[
"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 方法无效?代码中是否存在我看不到的错误?有没有人可以帮忙?
为什么您尝试使用两种 (POST, GET) 方法来实现相同的功能。
将 @RequestBody 与 GET 方法一起使用不是一个好习惯。
您是否添加了 spring 安全依赖和配置?
如果是,那么添加方法名称可能会对您有所帮助,如下所示。
.antMatchers(HttpMethod.POST,"/yourRequestURL").permitAll()
我的 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"
}
获取输出:
[
"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 方法无效?代码中是否存在我看不到的错误?有没有人可以帮忙?
为什么您尝试使用两种 (POST, GET) 方法来实现相同的功能。 将 @RequestBody 与 GET 方法一起使用不是一个好习惯。 您是否添加了 spring 安全依赖和配置?
如果是,那么添加方法名称可能会对您有所帮助,如下所示。 .antMatchers(HttpMethod.POST,"/yourRequestURL").permitAll()