2012-09-19 5 views
3

스프레이를 사용하여 RESTful 서비스를 구축하려고합니다. 내가 필요한 지침을 만드는 방법을 알아 냈습니다. 하지만 내가 겪고있는 문제는 내가 작업하고있는 "리소스"에 대한 URL을 안정적으로 생성하는 방법입니다. 참고 여기에서 "리소스"라는 용어는 RESTful API (즉, API를 통해 참조되는 서버 측 객체)에 사용되므로 여기에서 사용합니다.개체에 다시 연결할 URL을 생성하는 방법은 무엇입니까?

설명서를 살펴본 결과 Java 용 "리소스"(클래스 경로의 데이터 파일)에 대한 언급을 제외하고이 설명서에 대한 참조를 찾지 못했습니다.

확실히 "/ items/127"을 서버 측의 리소스에 매핑하는 지시문을 만들 수 있습니다. 하지만 적어도 (안전하고 자동적 인 방식으로) 스프레이에서 수행하는 방법을 알지 못한다면 서버 측 리소스가 주어진다면 그러한 URL을 생성하는 방법이 있습니다. 나는 Flask 프레임 워크에서 url_for과 비슷한 것을 찾고있다.

지금 당장은이 작업을 수행 할 함수를 작성하고 있습니다. 하지만 DRY가 아니기 때문에 (예 : URL을 생성 할 때 스프레이 라우팅에 대한 지식이 전혀 없기 때문에) 깨지기 쉽습니다.

내가 누락 된 항목이 있습니까?

답변

0

스프레이에는 url_for와 동일한 기능이 있다고 생각하지 않습니다. 스프레이에서는 함수에 주석이 달린 함수에 주석을 달지 않으므로 요청을 deserialize하고 결국 함수에 매핑하는 경로를 작성하고 있기 때문에 Spray의 컨텍스트에서 의미가 있다고 생각하지 않습니다.

이와 같이 함수 이름에서 예제 URL을 생성하는 쉬운 방법은 없습니다.

1

당신이 요구하는 것은 역방향 라우팅이라고합니다. @ iwein이 말했듯이 스프레이의 역방향 라우팅은 직접 지원하지 않습니다. Matthias in this thread에서 확인할 수 있습니다. open ticket for this issue이 있습니다.

그러나 Marcel Mojzis가 오픈 소스 인 PathMatcher를 기반으로 한 접근 방식이 있습니다. here을 찾을 수 있습니다.

나는 이것도 필요하지만, Spray (또는 akka-http)가이 문제에 대한 해결책을 찾을 때까지는 "알려진 패턴"접근법을 사용하려고합니다. 본질적으로, 나는 물건의 특정 패턴에 대한 URL을 생성하는 방법을 알고있는 객체를 가지고있다. 각 패턴은 함수이고 객체의 클라이언트는 함수 이름 중 하나에 의해 url을 요청해야합니다. 이상적이지는 않지만 akka-http가보다 일반적인 해결책을 제공 할 때까지는 매우 간단하고 효과적입니다.

관련 문제