java-POST 方法 415 错误

标签 java spring hibernate backbone.js

我有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"}

网络选项卡

enter image description here

最佳答案

如果您尝试在 POSTMAN 中进行调用,请添加 Content-Type: application/json 作为 header 参数。

关于java-POST 方法 415 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354973/

相关文章:

java - 解决 Hibernate 的微妙之处

java - 如何使用注释映射在 hibernate 中共享相同主键的两个实体?

java - Netty 服务器关闭期间的异常

java - 配置服务器如何更新配置?

java - For 循环和 LinkedList 的索引错误

java - Spring应用程序JPA和JDBC

spring - Akka Futures + Spring MVC 延迟结果 + tomcat 7.+

java - Spring Hibernate 生成动态查询

java - 简单的汇编代码转换为Java

java - Android 中每十秒从服务器获取一次响应