【发布时间】:2019-08-13 13:41:45
【问题描述】:
我正在使用 Spring 开发一个简单的 REST 服务。我有一个实体和一个控制器。我的问题是我不能从浏览器使用 Post 功能,它只能在终端上工作。 Get 功能在浏览器和终端上都可以正常工作,但 Post 功能只能在终端上工作,但我必须在浏览器上工作。
对于下面的代码,如果我导航到:
结果ok,返回所有记录。
获取方法:
@RestController
public class CityController {
...
@GetMapping(value = "/cities", produces = "application/json; charset=UTF-8")
List<City> all() {
return repository.findAll();
}
}
对于 Post 方法,如果我写如下内容,则只能在终端上工作:
curl -X POST localhost:8080/cities -H 'Content-type:application/json' -d '{"name":"test", "state":"test"}'
结果正常,记录已创建。
但是,在浏览器中,如果我尝试添加一条新记录:
什么都没有发生,也没有错误发生。
发布方式:
@PostMapping(path = "/cities", consumes = "application/json", produces = "application/json")
City newCity(@RequestBody City city) {
return repository.save(city);
}
实体:
@Entity
public class City {
@Id @GeneratedValue(strategy=GenerationType.AUTO) Long id;
private String name;
private String state;
public City() {
}
public City(String name, String state) {
this.name = name;
this.state = state;
}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
【问题讨论】:
-
在谷歌浏览器中添加
postman扩展 -
那么,不可能在所有浏览器上都工作,而且没有扩展?
-
您如何从浏览器将其作为
POST发送?仅将查询参数添加到 URL 不会使其成为POST。 -
那么,我该怎么做呢?
标签: java spring rest spring-mvc spring-data-jpa