2012-06-11 2 views
1

HTTP GET 요청을 사용하여 REST 웹 서비스에 액세스하려고합니다.REST HTTP에 더 많은 매개 변수 추가 GET

예를 들어 URI는 주어진 카테고리에 대해 사용 가능한 모든 부품을 반환하는 Rest 웹 서비스를 제공합니다.

http://localhost:8080/mycompany/parts/category 

나는/인증마다에서 REST 요청 위에 액세스하는 사용자에게 권한을 부여 할 내가 요청을 얻기 HTTP와 사용자 인증 정보 (사용자 이름 및 토큰)을 전달하려는.

HTTP 헤더 또는 쿼리 매개 변수를 사용하여 REST HTTP GET 요청에 위의 요구 사항을 충족시킬 수 있습니까?

또는

는 더 나은 HTTP GET 대신 HTTP의 POST를 사용할 수 있나요?

+0

어떤 종류의 인증 메커니즘을 염두에두고 있습니까? 표준 BASIC/DIGEST 메커니즘이나 사용자 정의 인증을 사용할 계획입니까? –

+0

HttpHeader 인증 토큰을 받아들이면 웹 서비스에 따라 다릅니다. 일부 서비스는 종종 http 헤더를 사용하는 OAuth를 사용합니다. POST/GET에 관해서는 일반적으로 다른 동작에 사용됩니다 - READ의 경우 GET, SAVE의 경우 POST. 일반적으로는 혼합하지 않아야합니다. 각 명령은 특정 명령에 사용됩니다. – Tisho

+0

@SureshKumar 맞춤 인증 메커니즘을 사용할 계획입니다. REST에서 표준 Auth 메소드를 사용할 수 있는지에 대한 아이디어가 없습니다. 그것에 읽는 Im – Nalakap

답변

0

정보를 얻으므로 "가져 오기"를 사용해야합니다. 여기에 내가 요청에의 oauth_token을 추가 (이으로 Restlet을 기반으로) 사용하는 코드 ...

언급 한 바와 같이
import org.restlet.data.Reference; 
import org.restlet.ext.oauth.OAuthUser; 
import org.restlet.representation.Representation; 
import org.restlet.resource.ClientResource; 

Reference commitsRef = new Reference(Consts.RESOURCE_BASE + "commitments/"); 
OAuthUser u = (OAuthUser) request.getClientInfo().getUser(); 
String token = u.getAccessToken(); 
ref.addQueryParameter("oauth_token", token); 
ClientResource commitsResource = new ClientResource(getContext(), commitsRef); 
Representation commitsRep = commitsResource.get(); 

,이은으로 Restlet 기반이다, 그러나 당신이 사용하는 프레임 워크 비슷한 아마이있다. (그리고 프레임 워크를 사용하지 않는다면 Restlet이 이것을 더 쉽게 만들 수 있습니다).

0

당신이 GET 또는 POST

과 같은 일을하지만 자격 증명을 보낼 수 있습니다 보다 인증하려면으로 Restlet은 나머지 프레임 워크

뿐만이없이 풍부한 API를 가지고 있기 때문에 당신은 좋은 이상으로 Restlet을 사용하는 경우 데이터 바구니 cookie

을 사용하여 서버 측 에서 사용자를 쉽게 인증 할 수 있습니다.