Java RESTAPI使用POST显示空白响应
在处理RESTAPI时,我使用POST方法使用@FormParam注释从Mongo DB获取数据。当我使用GET-type时,它会返回JSON格式的响应,当我将方法从GET改为POST时,我得到的是空白响应 守则:Java RESTAPI使用POST显示空白响应,java,mongodb,rest,Java,Mongodb,Rest,在处理RESTAPI时,我使用POST方法使用@FormParam注释从Mongo DB获取数据。当我使用GET-type时,它会返回JSON格式的响应,当我将方法从GET改为POST时,我得到的是空白响应 守则: //GetResponse.java // @Path("/Location") public class GetProjectLocationResponse { @POST @Path("/State") @Cons
//GetResponse.java
//
@Path("/Location")
public class GetProjectLocationResponse {
@POST
@Path("/State")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Object[] addBuild2(
@FormParam("Country") String Country,
@FormParam("State") String State) throws UnknownHostException, JSONException
{
System.out.println("ïnside Location");
Location loc = new Location();
List<DBObject> basicDBList=(List<DBObject>) loc.getState2(Country, State); //calling state method
return basicDBList.toArray();
}
//Location.java
//This defines the list of available zipcpdes on the basis on parameter 'Country' and 'States'.
public List<DBObject> getState2(String Country, String State) throws UnknownHostException {
DB db=ConnectToDB.getConnection();
DBCollection collection = db.getCollection("location");
BasicDBObject obj = new BasicDBObject();
obj.put("Country",Country);
obj.put("State",State);
BasicDBObject fields = new BasicDBObject();
fields.put("_id", 0);
DBCursor cursor = collection.find(obj, fields);
List<DBObject> obj1 =cursor.toArray();
System.out.println(""+obj1);
return obj1;
}
}
//index.html
//This file includes parameters 'country' and 'states' to return the JSON response.
<form action="rest/Location/State" method="post">
Enter Country:<input type="text" name="Country"/><br/><br/>
Enter State:<input type="text" name="State"/><br/><br/>
<input type="submit" value="submit"/>
//GetResponse.java
//
@路径(“/位置”)
公共类GetProjectLocationResponse{
@职位
@路径(“/State”)
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共对象[]addBuild2(
@FormParam(“国家”)字符串国家,
@FormParam(“状态”)字符串状态)抛出未知的hostException,JSONException
{
System.out.println(“ïnside位置”);
位置loc=新位置();
List basicDBList=(List)loc.getState2(Country,State);//调用State方法
返回basicDBList.toArray();
}
//Location.java
//这定义了基于参数“国家”和“州”的可用ZIPPD列表。
公共列表getState2(字符串国家/地区,字符串状态)引发UnknownHostException{
DB DB=ConnectToDB.getConnection();
DBCollection=db.getCollection(“位置”);
BasicDBObject对象=新的BasicDBObject();
obj.put(“国家”,国家);
obj.put(“状态”,状态);
BasicDBObject字段=新建BasicDBObject();
字段。放置(“\u id”,0);
DBCursor=collection.find(对象,字段);
List obj1=cursor.toArray();
系统输出打印项次(“+obj1”);
返回obj1;
}
}
//index.html
//该文件包含参数“country”和“states”以返回JSON响应。
输入国家:
输入状态:
我已经检查了代码,但没有发现任何错误的线索,导致POST类型的响应为空,而GET类型的响应为空。我认为它应该适用于POST类型,因为代码规范对这两种类型都是正确的。请在此处指定任何问题。提前感谢您在这里使用帖子是为了一个不同的错误目的 使用GET检索数据,使用POST创建所需实体。POST调用的典型响应是创建201,用户界面不应期望POST调用有任何响应 未指定HTTP POST返回数据,因此不希望返回数据 类似问题:
您在这里使用POST是出于不同的错误目的 使用GET检索数据,使用POST创建所需实体。POST调用的典型响应是创建201,用户界面不应期望POST调用有任何响应 未指定HTTP POST返回数据,因此不希望返回数据 类似问题:
谢谢,在对基于参数的REST API使用@FormParam注释时,我可以使用GET吗?因为我在使用GET时出错。@user2267023,No.POST和PUT允许您在需要时使用表单参数。对于GET-only
,QueryParam
可以工作。快速链接:。我们可以使用ObjectMapper类通过POST实现这一点吗?有什么想法吗?你可以将请求正文传递给帖子,但不能传递FormParam。请随意探索。传递HttpServletRequest请求或请求正文,并使用对象映射器转换请求并继续。不确定是否只使用JAX-RS实现。如果您使用的是Spring REST,请继续使用@RequestBody
谢谢,我使用的是JAX-RS实现而不是Spring REST,所以解决方案是不可能的?谢谢,我可以在使用@FormParam注释基于参数的REST API时使用GET吗?因为我在使用GET时出错。@user2267023,No.POST和PUT允许您在需要时使用表单参数。对于GET-only,QueryParam
可以工作。快速链接:。我们可以使用ObjectMapper类通过POST实现这一点吗?有什么想法吗?你可以将请求正文传递给帖子,但不能传递FormParam。请随意探索。传递HttpServletRequest请求或请求正文,并使用对象映射器转换请求并继续。不确定是否只使用JAX-RS实现。如果您使用的是SpringREST,请继续使用@RequestBody
谢谢,我使用的是JAX-RS实现而不是SpringREST,所以解决方案是不可能的?