REST 中的 HTTP 204 错误(Dropwizard)
HTTP 204 error in REST (Dropwizard)
我遇到了 HTTP 204 错误问题。总是,当我尝试使用 POST 命令并将数据推送到 dropwizard 时,我有 204。我不知道为什么,我尝试解决它但代码看起来不错。
public class POIDefinition {
// int id;
String description;
// String location;
}
public class poisDAO implements poiDAO {
private static List<POIDefinition> POI = new ArrayList<POIDefinition>();
@Override
public void addPOI(String description) {
POIDefinition newPoi = new POIDefinition();
// newPoi.id = id;
newPoi.description = description;
// newPoi.location = location;
POI.add(newPoi);
}
@Override
public List<POIDefinition> GetAllPois() {
return (ArrayList<POIDefinition>) POI;
}
@Override
public POIDefinition retrievePOI(int id) {
return POI.get(id);
}
@Override
public void updatePOI(POIDefinition pd) {
}
@Override
public void removePOI(int id) {
POI.remove(id);
}
}
@Path("/poi")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class POIResource {
poiDAO pDAO;
public POIResource(poiDAO pDAO)
{
this.pDAO = pDAO;
}
@POST
@Path("add")
public void addPOI(@QueryParam("addPOI") String description)
{
pDAO.addPOI(description);
}
@GET
@Path("/getAllPois")
public List<POIDefinition> getAllPois()
{
return pDAO.GetAllPois();
}
@GET
@Path("/getPOI")
public POIDefinition retreivePoi(@QueryParam("id") int id)
{
return pDAO.retrievePOI(id);
}
@POST
@Path("/removePOI")
@Consumes(MediaType.APPLICATION_JSON)
public void removePoi(@QueryParam("removePOI") int id)
{
pDAO.removePOI(id);
}
}
我有轨迹
0:0:0:0:0:0:0:1 - - [27/lut/2015:22:47:37 +0000] "POST /poi/add/?addPOI=test HTTP/1.1" 204 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36" 1
几行代码之前,我尝试创建 class 包含更多对象,例如 id 和位置,但我不知道如何将这些数据添加到 rest-post 命令中线,我总是有同样的错误。
204 不是错误,它表示请求已成功处理并且 Web 服务没有return响应正文中的任何其他内容。
HTTP 状态代码编号 204 表示 "The server successfully processed the request, but is not returning any content. Usually used as a response to a successful delete request."
当您告诉应用程序添加元素时,应用程序以类似 "OK, I added it" 的方式响应是有道理的,就像它的行为一样。我希望它被添加到列表中,而不返回我刚刚添加的对象。检索它以进行报告是另一个完全独立的操作。
我遇到了 HTTP 204 错误问题。总是,当我尝试使用 POST 命令并将数据推送到 dropwizard 时,我有 204。我不知道为什么,我尝试解决它但代码看起来不错。
public class POIDefinition {
// int id;
String description;
// String location;
}
public class poisDAO implements poiDAO {
private static List<POIDefinition> POI = new ArrayList<POIDefinition>();
@Override
public void addPOI(String description) {
POIDefinition newPoi = new POIDefinition();
// newPoi.id = id;
newPoi.description = description;
// newPoi.location = location;
POI.add(newPoi);
}
@Override
public List<POIDefinition> GetAllPois() {
return (ArrayList<POIDefinition>) POI;
}
@Override
public POIDefinition retrievePOI(int id) {
return POI.get(id);
}
@Override
public void updatePOI(POIDefinition pd) {
}
@Override
public void removePOI(int id) {
POI.remove(id);
}
}
@Path("/poi")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class POIResource {
poiDAO pDAO;
public POIResource(poiDAO pDAO)
{
this.pDAO = pDAO;
}
@POST
@Path("add")
public void addPOI(@QueryParam("addPOI") String description)
{
pDAO.addPOI(description);
}
@GET
@Path("/getAllPois")
public List<POIDefinition> getAllPois()
{
return pDAO.GetAllPois();
}
@GET
@Path("/getPOI")
public POIDefinition retreivePoi(@QueryParam("id") int id)
{
return pDAO.retrievePOI(id);
}
@POST
@Path("/removePOI")
@Consumes(MediaType.APPLICATION_JSON)
public void removePoi(@QueryParam("removePOI") int id)
{
pDAO.removePOI(id);
}
}
我有轨迹 0:0:0:0:0:0:0:1 - - [27/lut/2015:22:47:37 +0000] "POST /poi/add/?addPOI=test HTTP/1.1" 204 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36" 1
几行代码之前,我尝试创建 class 包含更多对象,例如 id 和位置,但我不知道如何将这些数据添加到 rest-post 命令中线,我总是有同样的错误。
204 不是错误,它表示请求已成功处理并且 Web 服务没有return响应正文中的任何其他内容。
HTTP 状态代码编号 204 表示 "The server successfully processed the request, but is not returning any content. Usually used as a response to a successful delete request."
当您告诉应用程序添加元素时,应用程序以类似 "OK, I added it" 的方式响应是有道理的,就像它的行为一样。我希望它被添加到列表中,而不返回我刚刚添加的对象。检索它以进行报告是另一个完全独立的操作。