有人知道如何在REST Web服务中输入多个查询参数吗? 我用java编写。我的curl样本是这样的:
curl -X PUT http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read -v
我的节目是:
@PUT
@Path("{user}/{directory:.+}")
public Response doshare(@PathParam("user")String name,
@PathParam("directory")String dir,
@QueryParam("name")String sharename,
@QueryParam("type")String type){
mongoDAOImpl impl=new mongoDAOImpl();
Mongo mongo=impl.getConnection("127.0.0.1","27017");
DB db=impl.getDataBase(mongo,"public");
DBCollection coll=impl.getColl(db,name);
DBCollection coll2=impl.getColl(db,"sharedb");
shareDTO sharedto=new shareDTO();
String authority=type.toLowerCase();
if(authority.equals("rd")){
sharedto.setAuthority("4");
}else if(authority.equals("rw")){
sharedto.setAuthority("12");
}
sharedto.setTargetuser(sharename);
sharedto.setRealURI("/home/public/"+name+"/"+dir);
sharedto.setIdentifier(name);
sharedto.setParentURI("/home/public/"+sharename);
boolean bool = false;
sharefun=new sharefunction();
if(sharefun.checksubfoldershared(coll, coll2, sharedto)){
bool=sharefun.sharefiles(coll, coll2, sharedto);
}else{
System.out.println("Error");
}
// ...
但我只获取名称查询参数。如何获取或如何输入curl命令以获取所有查询参数?
答案 0 :(得分:19)
您的代码很好 - 问题在于您调用curl的方式。将URL传递给包含“&”的curl时,您必须在URL周围加上引号。否则,shell将解释'&'之后的内容作为一个单独的命令。
编辑:当我提交评论时,我的文字正在被发送。这是你需要做的:
curl -X PUT 'http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read' -v
答案 1 :(得分:1)
您可以尝试将此全部作为分段上传处理(服务器端详细信息未标准化,您没有说明您正在使用哪种框架,因此我无法提供更多线索)但我会质疑您的原因首先要设置用户和权限(通过任何参数)。当然,通过检查用户的登录凭据并使用他们以后可以更改的默认权限集,您最好将用户导出为存储?几乎一样便宜,极其更简单。
答案 2 :(得分:0)
您是否尝试过使用-d选项? e.g。
curl -X PUT -d "name=shareuser&type=Read" http://locahost:8080/project/resources/user/directory/sub-directory -v