как поставить несколько параметров запроса в веб-сервис REST - PullRequest
4 голосов
/ 26 апреля 2011

Кто-нибудь знает, как ПОСТАВИТЬ несколько параметров запроса в веб-сервис REST?Я пишу с использованием 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, чтобы получить все параметры запроса?

Ответы [ 3 ]

19 голосов
/ 26 апреля 2011

Ваш код в порядке - проблема в том, как вы вызываете curl.При передаче URL-адреса curl, который содержит '&', вы должны заключать в кавычки URL-адрес.В противном случае оболочка будет интерпретировать материал после символа «&» как отдельную команду.

РЕДАКТИРОВАТЬ: мой текст становится ненадежным, когда я отправляю его как комментарий.Вот что вам нужно сделать:

curl -X PUT 'http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read' -v
1 голос
/ 26 апреля 2011

Вы можете попробовать обработать все это как составную загрузку (детали на стороне сервера не стандартизированы, и вы не сказали, какую платформу вы используете, поэтому я не могу дать больше подсказок), но я спрашиваю, почему вы ' сначала пользователь и права доступа (с помощью любых параметров ). Конечно, вам было бы лучше получить пользователя для хранения, как путем проверки учетных данных пользователя и использования набора разрешений по умолчанию, который они могут изменить позже? Почти так же дешево, и чрезвычайно проще.

0 голосов
/ 26 апреля 2011

Вы пытались использовать опцию -d? например,

curl -X PUT -d "name=shareuser&type=Read" http://locahost:8080/project/resources/user/directory/sub-directory -v
...