2017-11-20 16 views
2

내 Akka의 HTTP 애플리케이션은 내부 HTTP 시스템에 일부 요청 - 프록시에게 역 :Akka HTTP의 경로 접두사를 일치시키는 방법은 무엇입니까?

pathPrefix("/api/") { 
    (path("some-upload-endpoint") & post) { 
    withSizeLimit(10 * 1024 * 1024) { 
     reverseProxyToBackend(rc) 
    } 
    } ~ reverseProxyToBackend(rc) 
} 

reverseProxyToBackend가 들어오는 요청을합니다 사용자 정의 지시어입니다, 일부 헤더를 추가하고 나머지를 기반으로, 백엔드 시스템에 전달 일치하지 않음 경로. IOW, /api/foobarbackend.example.com/foobar이됩니다.

특정 경로의 경우 some-upload-endpoint 그러나 프런트 엔드의 기본 크기 제한을 늘려야합니다.이 엔드 포인트에 대한 더 큰 요청이 예상됩니다.

불행하게도, path("some-upload-endpoint") 를 소모는 나머지 경로는, 위의 코드 reverseProxyToBackend에 있도록하는 것은 내가 원하지 않는 것입니다, 이는 오히려 backend.example.com/some-upload-endpoint보다 backend.example.com에 전달할 것입니다.

어떻게 Akka HTTP의 경로와 일치시킬 수 있습니까? 은 아니지만은 그것을 소비합니까? 다른 말로하면 경로 지정자가 비교할 수없는 경로를 변경하지 못하게하는 데 사용할 수있는 지침은 무엇입니까? 그리고 그러한 지침이 없다면 어떻게 필적 할 수없는 경로를 복원 할 수 있습니까?

답변

2

extractMatchedPath은 이미 일치 된 경로를 "재구성"해야합니다. 문서에서 :

extractMatchedPath 지시어는 이미 이었다 PathDirectives (또는 요청 문맥의 타의 추종을 불허하는 경로 필드를 변경합니다 사용자 정의 것들)의 일치 경로를 추출합니다. 로직에서 이미 일치하는 부분을 사용하는 빌드 지시문을 에 사용할 수 있습니다.