我有java EE项目。我在这个项目中使用Spring Hibernate作为服务器端,使用Backbone、RequireJS、Jquery作为客户端。我尝试使用POST方法保存,但返回HTTP 415错误。
我的 Get 方法工作正常。我在 Postman 上测试过。
我的网址:localhost:8080/rest/travel
已编辑
我的资源类
@Component
@Path("/travel")
public class TravelResource {
@Autowired
private TravelService travelService;
@Autowired
private UserService userService;
@POST
@Produces(MediaType.APPLICATION_JSON+ ";charset=UTF-8")
@Consumes(MediaType.APPLICATION_JSON)
public TravelDTO save(TravelDTO dto) {
dto.setUser(userService.get(dto.getUser().getUserID()));
dto.setTravelStart(new Date());
dto.setTravelEnd(new Date());
return travelService.save(dto);
}
@PUT
@Path("/{travelID}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public TravelDTO edit(@PathParam("travelID") int id, TravelDTO dto) {
dto.setUser(userService.get(dto.getUser().getUserID()));
dto.setTravelStart(new Date());
dto.setTravelEnd(new Date());
return travelService.edit(id,dto);
}
@DELETE
@Path("/{travelID}")
@Produces(MediaType.TEXT_PLAIN)
public int delete(@PathParam("travelID") int id) {
travelService.delete(id);
return id;
}
@GET
@Path("/{travelID}")
@Produces(MediaType.APPLICATION_JSON)
public TravelDTO get(int id) {
return travelService.get(id);
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<TravelDTO> getAll() {
return travelService.getAll();
}
@GET
@Path("/search/{travelStart}/{travelEnd}/" )
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
public List<TravelDTO> search(@PathParam("travelStart") Date travelStart,
@PathParam("travelEnd") Date travelEnd )
{
return travelService.search(travelStart,travelEnd);
}
}
我的DTO类(class)
public class TravelDTO implements Serializable {
public TravelDTO convert(Travel model) {
this.setTravelID(model.getTravelID());
this.setTravelCost(model.getTravelCost());
this.setTravelStart(model.getTravelStart());
this.setTravelEnd(model.getTravelEnd());
this.setLocation(model.getLocation());
this.setTravelPurpose(model.getTravelPurpose());
this.setProjectCode(model.getProjectCode());
this.setUser(new UserDTO().convert(model.getUser()));
return this;
}
private int travelID;
private String projectCode;
private Date travelStart;
private Date travelEnd;
private String Location;
private float travelCost;
private UserDTO user;
private String travelPurpose;
public UserDTO getUser() {
return user;
}
public void setUser(UserDTO user) {
this.user = user;
}
public String getProjectCode() {
return projectCode;
}
public void setProjectCode(String projectCode) {
this.projectCode = projectCode;
}
public int getTravelID() {
return travelID;
}
public void setTravelID(int travelID) {
this.travelID = travelID;
}
public Date getTravelStart() {
return travelStart;
}
public void setTravelStart(Date travelStart) {
this.travelStart = travelStart;
}
public Date getTravelEnd() {
return travelEnd;
}
public void setTravelEnd(Date travelEnd) {
this.travelEnd = travelEnd;
}
public String getLocation() {
return Location;
}
public void setLocation(String location) {
Location = location;
}
public float getTravelCost() {
return travelCost;
}
public void setTravelCost(float travelCost) {
this.travelCost = travelCost;
}
public String getTravelPurpose() {
return travelPurpose;
}
public void setTravelPurpose(String travelPurpose) {
this.travelPurpose = travelPurpose;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TravelDTO travelDTO = (TravelDTO) o;
return travelID == travelDTO.travelID;
}
@Override
public int hashCode() {
return travelID;
}
}
我的服务等级
@Service
public class TravelService {
@Autowired
private TravelDAO travelDAO;
@Transactional
@ResponseBody
public TravelDTO save(TravelDTO dto) {
Travel station = new Travel();
station.convert(dto);
try {
station = travelDAO.persist(station);
} catch (Exception e) {
return null;
}
return dto.convert(station);
}
@Transactional
@ResponseBody
public TravelDTO edit(int id, TravelDTO dto) {
Travel travel = new Travel();
try {
travel.convert(dto);
travelDAO.merge(travel);
} catch (Exception e) {
return null;
}
return dto.convert(travel);
}
@Transactional
@ResponseBody
public boolean delete(int id) {
try {
Travel travel = travelDAO.find(id);
travelDAO.remove(travel);
} catch (Exception e) {
return false;
}
return true;
}
public TravelDTO get(int id) {
Travel travel;
try {
travel = travelDAO.find(id);
} catch (Exception e) {
return null;
}
return new TravelDTO().convert(travel);
}
public List<TravelDTO> getAll() {
List<TravelDTO> travelDTOList = new ArrayList<TravelDTO>();
try {
for (Travel travel : travelDAO.findAll())
travelDTOList.add(new TravelDTO().convert(travel));
} catch (Exception e) {
return null;
}
return travelDTOList;
}
public List<TravelDTO> search(Date startTime, Date endTime)
{
List<TravelDTO> travelDTOList = new ArrayList<TravelDTO>();
try {
for (Travel station : travelDAO.search(startTime, endTime))
travelDTOList.add(new TravelDTO().convert(station));
} catch (Exception e) {
return null;
}
return travelDTOList;
}
}
我的数据:
model:{"Location":"s","projectCode":"51","travelPurpose":"s","travelStart":"1.1.1","travelEnd":"8.12.2016"}
网络选项卡
最佳答案
如果您尝试在 POSTMAN 中进行调用,请添加 Content-Type: application/json 作为 header 参数。
关于java-POST 方法 415 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354973/