2011-04-26 3 views
4

REST 웹 서비스에서 여러 쿼리 매개 변수를 푸는 방법을 아는 사람이 있습니까? 내가 쓰기 java.My 컬 샘플을 사용하여이는 다음과 같이이다 :REST 웹 서비스에서 여러 쿼리 매개 변수를 푸시하는 방법

@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"); 
    } 
    // ... 

하지만 이름 만 쿼리 parameter.How이 얻을 수 또는 컬을 입력하는 방법 :

curl -X PUT http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read -v 

내 프로그램입니다 명령을 사용하여 모든 쿼리 매개 변수를 가져 옵니까?

+0

PUT 및 쿼리 매개 변수? 기분이 좋지 않아. –

+0

해결 방법은 없습니까? 창 기반 응용 프로그램을위한 웹 서비스를 작성 중입니다. 나는 aldy 웹 응용 프로그램이 있습니다. – sudo

+0

내 대답보기. –

답변

19

코드가 훌륭합니다. 문제는 말풍선을 부르는 방식입니다. '&'이 포함 된 컬링 URL을 전달할 때 URL 주위에 따옴표를 넣어야합니다. 그렇지 않으면 쉘은 '&'다음의 내용을 별도의 명령으로 해석합니다.

EDIT : 의견을 제출할 때 텍스트가 munged가됩니다. 다음은해야 할 일입니다.

curl -X PUT 'http://localhost:8080/project/resources/user/directory/sub-directory?name=shareuser&type=Read' -v 
+0

"curl -X PUT http : // localhost : 8080/project/resources/user/directory/sub-directory? name = shareuser '&'type = read"를 사용하여 curl을 호출했습니다. 하지만 HTTP "500"예외가 있습니다. 여전히 문제가 있습니다. 유형을 읽고 쓰면 어떻게해야합니까? "? name = shareuser '&'type = read & write" – sudo

+0

아니요, 제가 다시 쓴 것을 읽으십시오. * URL 주위에 따옴표 *를 넣으십시오. 마찬가지로 : curl 'http://example.com/?a=A&b=B' –

+0

안녕하세요 마이크, HTTP 500 같은 오류가있어. 내가 쓴 : curl -X PUT 'http : // localhost : 8080? a = A & b = B ' – sudo

0

-d 옵션을 사용해 보셨습니까? 예 :

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

예 시도했지만 동일한 오류가 발생했습니다. 어쩌면 Coz 내 PUT 기능 충돌입니다. 나는 또한 컨테이너를 만들기위한 PUT 기능을 가지고있다. – sudo

1

당신 수 (서버 측 세부 사항은 표준화되지 당신은 그래서 더 많은 단서를 제공 할 수없는 사용중인 프레임 워크는 말하지 않았다) 모두 멀티 업로드로 이것을 처리하려고하지만 왜 사용자와 권한이 (의 모든 매개 변수를 통해) 설정되어 있는지 질문합니다. 물론 사용자의 로그인 자격 증명을 검사하고 나중에 변경할 수있는 기본 권한 집합을 사용하여 사용자를 파생시키는 것이 더 낫습니다. 거의 값 싸고, 은 대단히입니다.

+0

안녕하세요, 웹 서비스 용 프레임 워크를 사용하지 않습니다. 난 그냥 웹 응용 프로그램으로 NetBean에서 만들고 POJO 클래스에서 REST 웹 서비스를 작성합니다. 이 PUT 방법은 사용자 인증 또는 업로드가 아닌 공유 기능입니다. 웹 서비스에 익숙하지 않고 저장소에 대한 인턴쉽을하고 있습니다. 감독자는 가능한 한 일찍 끝내라고합니다. 그래서 콜드 u는 어떤 제안을합니까? – sudo

+2

@user : 프레임 워크를 사용하고 있습니다! 뭔가 특수 효과를 처리하여 모든 것을 연결하는 코드로 변환합니다. Netbeans을 사용하고 있다고 가정 할 때, 아마도 당신이 모르는 사람 일지라도 아마도 Jersey를 사용하고있을 것입니다. Jersey의 다중 처리는 확장입니다 (저지 - 다중 분할). –

관련 문제