5

REST Web サービスで複数のクエリ パラメータを PUT する方法を知っている人はいますか? 私は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 コマンドを取得または入力する方法を教えてください。

4

3 に答える 3

20

コードは問題ありません。問題は、curl を呼び出す方法にあります。「&」を含む URL を curl に渡すときは、URL を引用符で囲む必要があります。そうしないと、シェルは「&」の後の内容を別のコマンドとして解釈します。

編集: コメントとして送信すると、テキストが乱れます。必要な作業は次のとおりです。

curl -X PUT 'http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read' -v
于 2011-04-26T03:49:04.140 に答える
1

これをすべてマルチパートアップロードとして処理してみることができます(サーバー側の詳細は標準化されておらず、使用しているフレームワークがわからないため、これ以上の手がかりはありません)が、なぜそもそも(任意のパラメーターを介して)ユーザーとアクセス許可が設定されます。確かに、ユーザーのログインクレデンシャルを調べて、後で変更できるデフォルトの権限セットを使用するなどして、ユーザーに保存を依頼する方がよいでしょうか。ほぼ同じくらい安く、非常に簡単です。

于 2011-04-26T06:52:39.840 に答える
1

-d オプションを使用してみましたか? 例えば

curl -X PUT -d "name=shareuser&type=Read" http://locahost:8080/project/resources/user/directory/sub-directory -v
于 2011-04-26T06:21:42.267 に答える