2012-07-12 2 views
3

DogManagementPro 프로그램은 클라이언트를 구입 한 고객이 자신의 PC에서 서버를 실행하고 로컬 또는 원격으로 액세스해야하는 클라이언트/서버 아키텍처로 작성된 응용 프로그램이라고 가정합니다.REST API의 절대 URI 대 상대 URI를 반환하는 경우

DogManagementPro REST API에서 "모든 개 목록"작업을 지원한다고 가정합니다.

그렇게 http://localhost/DogManagerPro/api/dogs에 GET 이제 다음과 같은 응답을 가져해야 내가 원하는

<dogs> 
    <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog> 
    <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog> 
</dogs> 

내 로컬 LAN에 원격으로 액세스하려면 [내 컴퓨터의 로컬 IP가 192.168.0.33] 무엇을해야 aa는 http://192.168.0.33:1234/DogManagerPro/api/dogs으로 가져옵니다.

그것은해야한다 : 아마

<dogs> 
    <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog> 
    <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog> 
</dogs> 

나 :

<dogs> 
    <dog>http://192.168.0.33/DogManagerPro/api/dogs/ralf</dog> 
    <dog>http://192.168.0.33/DogManagerPro/api/dogs/sparky</dog> 
</dogs> 

?

어떤 사람들

은 내가 지금처럼 단지 경로 요소 반환하여 문제를 완전히 가라한다고 주장 :

<dogs> 
    <dog>/DogManagerPro/api/dogs/ralf</dog> 
    <dog>/DogManagerPro/api/dogs/sparky</dog> 
</dogs> 

이 가장 좋은 방법은 무엇입니까?

+0

도메인을 사용할 수도 있습니다. 'http : // dogmanagerpro/api/dogs/sparky' 여기서'dogmanagerpro'는 서버가 듣고있는 특정 컴퓨터 : 포트를 가리 키도록 설정됩니다. 이 옵션은 물리적 주소 변경과 관련하여 가장 유연하지만 클라이언트가 DogManagerPro를 절대 주소에 매핑 할 수있는 자체 도메인 서버 (DNS 서버)를 실행해야합니다. –

답변

3

저는 개인적으로 항상 절대치가 아닌 URL을 사용했습니다. 리버스/캐싱 프록시와 같은 몇 가지 다른 문제도 해결합니다.

클라이언트의 경우 조금 더 복잡하지만 문서를 그대로 저장하려는 경우 기본 URL을 저장하거나 내부 URL을 확장해야합니다.

전체 URL 경로를 선택하는 경우 HTTP_HOST를 사용하지 말고 여러 개의 가상 호스트와 환경 변수를 설정하고 사용하십시오. 나중에 원본 서버 앞에 프록시가 필요한 경우이 문제를 해결합니다.

+0

상대 URL은 서버 측에서 가장 쉽게 보이며 많은 사람들은 "많은 서버 측 사람들이 권장하는 바입니다"라고 말해야한다고 조언했습니다. –

+0

@Aviad. :) 그러나 그것은 단지 이야기의 한 면일뿐입니다. 당신도 클라이언트 쪽을 고려해야합니다. [이 답변] (http://stackoverflow.com/questions/2239405/hateoas-absolute-or-relative-urls/2240380#2240380)과 [this is my understanding too] (http://stackoverflow.com/questions)를 참조하십시오./2239405/absolute-or-relative-urls/18505331 # 18505331) – RayLuo

+0

@iceberg 상대 URI와 절대 경로를 의미합니다. –

0

내가 말을 절대 URL은 클라이언트가

<dogs> 
    <dog>http://192.168.0.33:1234/DogManagerPro/api/dogs/ralf</dog> 
    <dog>http://192.168.0.33:1234/DogManagerPro/api/dogs/sparky</dog> 
</dogs> 

를 보낸 Host 헤더를 기반으로 만든 반환 URI는 클라이언트가 해결할 수있는 뭔가해야한다.

관련 문제