리소스와 엔드 포인트의 차이점은 무엇입니까?


139

나는 "자원"과 "종료점"모두 같은 것을 말하는 것을 들었다. 자원은 더 새로운 용어 인 것 같습니다.

그들 사이의 차이점은 무엇입니까? "자원"이 RESTful 디자인을 의미합니까?

답변:


107

쉬다

ResourceEndpoint 의 RESTful 하위 집합입니다 .

엔드 포인트 자체로는 서비스가 액세스 할 수있는 위치입니다 :

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

자원 이 이해하기 인간에 대한 쉽기 때문에 하나 이상의 명사가, 네임 스페이스 방식으로 표현, 제공되는에 말한다 :

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

위의 모든 사항은 서비스 엔드 포인트로 간주 될 수 있지만 최하위 그룹 만 리소스로 간주되며 RESTful하게 말할 수 있습니다. 최상위 그룹은 제공하는 콘텐츠와 관련하여 표현력이 없습니다.

REST 요청은 명사 (자원)와 동사 (HTTP 메소드) 로 구성된 문장 과 같습니다.

  • GET(방법) 사용자 이름이 johnny(자원)입니다.
  • DELETE(방법) 아이디가있는 책 1234(자원)

비 REST

엔드 포인트는 일반적으로 서비스를 의미하지만 리소스는 많은 것을 의미 할 수 있습니다. 사용되는 컨텍스트에 따라 달라지는 리소스의 예는 다음과 같습니다.

URL : 균일 한 "자원"로케이터

  • RESTful 일 수 있지만 종종 그렇지 않습니다. 이 경우 엔드 포인트는 거의 동의어입니다.

자원 관리

사전

  • 정의는 단어의 더 많은 사용을 제공합니다.

당신을 도울 수있는 것 :

도서관은 귀중한 자료였으며 종종 그것을 활용했습니다.

자원은 생명을 유지하는 데 유용한 물과 나무와 같은 천연 물질입니다.

[pl] 지구는 자원이 제한되어 있으며, 재활용하지 않으면 재활용합니다.

자원은 또한 필요할 때 사용할 수있는 돈이나 소유물과 같은 가치있는 것들입니다.

[pl] 정부는 필요한 교사 수를 고용 할 자원이 없습니다.


도덕

정의에 의한 자원 이라는 용어 는 많은 미묘한 차이가 있습니다. 그것은 모두 사용 된 컨텍스트 에 달려 있습니다.


1
나는 같은 것을 의심했다. 이것을 설명하거나 문서화하는 참고 자료를 본 적이 있습니까?
B 세븐

각 용어에 대한 느낌을주는 링크를 추가했습니다.
cchamberlain 2016 년

84

자원엔드 포인트 라는 용어 는 종종 동의어로 사용됩니다. 그러나 실제로 그들은 같은 것을 의미하지 않습니다.

엔드 포인트 라는 용어 는 요청하는 데 사용되는 URL에 중점을 둡니다 . 리소스
라는 용어 는 요청에 의해 반환되는 데이터 세트 에 중점을 둡니다 .

이제 여러 다른 엔드 포인트 에서 동일한 자원에 액세스 할 수 있습니다 . 또한 쿼리 문자열에 따라 동일한 끝 점이 다른 리소스를 반환 할 수 있습니다 .

몇 가지 예를 보자.

동일한 자원에 액세스하는 다른 엔드 포인트

다른 엔드 포인트 의 다음 예를 살펴보십시오 .

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

그들은 분명히 주어진 API에서 모두 동일한 리소스 에 액세스 할 수 있습니다 .

또한 기존 API를 완전히 변경할 수 있습니다. 이로 인해 완전히 새롭고 다른 URL을 사용하여 동일한 이전 자원에 ​​액세스하는 새 엔드 포인트가 발생할 수 있습니다.

/api/employees/3
/new_api/staff/3

다른 리소스에 액세스하는 하나의 엔드 포인트

엔드 포인트가 콜렉션을 리턴하면 쿼리 문자열을 사용하여 검색 / 필터링 / 정렬을 구현할 수 있습니다. 결과적으로 다음 URL은 모두 동일한 엔드 포인트 ( /api/companies)를 사용하지만 다른 자원 (또는 자원 콜렉션 은 정의 자체로 자원 임)을 리턴 할 수 있습니다 .

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
잘 설명 👍🏻
mangonights

1
"결과적으로 다음 URL은 모두 동일한 엔드 포인트 (/ api / 회사)를 사용하지만 다른 리소스를 반환 할 수 있습니다." 나는 범죄를 의미하지 않지만 당신은 정말로 여기에서 당신의 해석을 만들고 있습니다. REST 측면에서 이들은 서로 다른 자원의 위치 일뿐입니다. URL의 다른 부분으로 설명하려고 한 끝점 부분. 프로그래머이기 때문에 단일 동작 방식의 코드로 구현 방법을 생각하고 있기 때문입니다. 서로 다른 모든 URL이 라우팅되어 4 개의 서버에서 제공되고 모두 동일한 엔드 포인트라고 가정합니다. 이제 말이되지 않습니다.
Luke Puplett

1
쿼리 문자열이 엔드 포인트의 일부가 아닌 이유는 엔드 포인트가 REST 언어 또는 URL의 일부가 아니기 때문입니다. 그렇지 않습니다. 처리 웹 응용 프로그램을 코딩하는 관점에서 생각하고 있습니다. REST는 쿼리 매개 변수 나 정렬 또는 기타 항목에 대해서는 언급하지 않습니다. 그렇지 않습니다. / orders를 사용하여 모음과 / orders? top = 10을 반환하는 경우 (단순한 URL), 모음에 대해 / 32knre32nj에 대한 링크를 사용하고 상위 10 개의 주문에 대해 / abcd에 대한 링크를 사용하는 것보다 RESTful하지 않습니다. 그들은 단지 자원 식별자 일뿐입니다. URL은 다소 RESTful 할 수 없으며 엔드 포인트는 중요하지 않습니다.
Luke Puplett

추가하기 위해 REST의 중요한 부분은 연결이므로 소비자는 리소스 식별자를 신경 쓰지 않아도됩니다. 여기서 URL이 주석 추가 버튼 뒤에있는 것은 신경 쓰지 않습니다. 엔드 포인트와 예쁜 URL에 대한 생각을 멈추고 URL이 우연히 발생하는 하이퍼 링크에 대한 생각을 멈 추면 상호 작용 목표에 대한 워크 플로 기반 API를 훨씬 쉽게 디자인 할 수 있습니다. 여기서 x는 검색이 최종 애플리케이션 상태로 진행되는 중간에 있습니다.
Luke Puplett

"종료점"에 대한 정식 정의 나 사양은 없습니다. 그것은 모두 그것과 관련하여 사용 된 기술로 귀결됩니다. 예를 들어, 구글 "엔드 포인트는 무엇입니까?" 이 문제에 관한 주요 기사 중 하나는이 페이지입니다. 우리는 여기에 사용 된 컨텍스트를 기반으로 여기에 정의하고 있습니다. 엔드 포인트 자체가 반드시 RESTful 일 필요는 없지만이 답변의 모든 예제는 RESTful입니다. SOAP를 참조하십시오.
cchamberlain

7

아마도 내 것이 큰 대답은 아니지만 여기에 간다.

HTTP를 통해 진정으로 RESTful 웹 서비스로 더 많은 작업을 수행했기 때문에 명확한 정의가 없으므로 엔드 포인트라는 용어를 사용하지 못하게하고 대신 리소스 및 리소스 위치 인 REST의 언어를 사용하려고했습니다.

내 생각에 끝점은 TCP 용어입니다. URL의 일부가 수신 서버를 식별하기 때문에 HTTP로 혼동됩니다.

따라서 리소스는 새로운 용어가 아닙니다. 엔드 포인트가 항상 잘못 사용 된 것으로 생각하고 REST 스타일 을 API 스타일 로 생각하면서이를 실현하고 있습니다.

편집하다

나는 이것에 대해 블로그했다.

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

에 따르면 https://apiblueprint.org/documentation/examples/13-named-endpoints.html는 A는 자원 반면, 예를 들어 / 고객 / 30654 / 주문 - 지정된 개체의 저장의 "일반"장소 엔드 포인트는 콘크리트 작업입니다 주어진 리소스를 통한 (HTTP 메소드). 따라서 하나의 자원에 여러 개의 엔드 포인트가있을 수 있습니다.


1
@Dafka 미안하지만 잘못되었습니다. 엔드 포인트는 사용중인 동사 (GET, POST, PUT, DELETE, PATCH와 같은 HTTP 메소드)와 관련이 없습니다.
Jpsy

0

사용자, 미션 및 보상 포인트 정보가있는 서버를 고려하십시오.

  1. 사용자와 보상 포인트는 자원입니다
  2. 엔드 포인트는 둘 이상의 자원과 관련 될 수 있습니다.
  3. 엔드 포인트는 설명 또는 전체 또는 부분 URL을 사용하여 설명 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

출처 : API 엔드 포인트 및 리소스


-1

1. 자원 설명 "리소스"는 API가 반환 한 정보를 나타냅니다.

2. 종점과 방법 엔드 포인트는 자원에 액세스하는 방법을 나타내며 메소드는 자원과의 허용 된 상호 작용 (예 : GET, POST 또는 DELETE)을 나타냅니다.

추가 정보 : 3. 매개 변수 변수 변수는 응답에 영향을주기 위해 엔드 포인트와 함께 전달할 수있는 옵션입니다 (예 : 응답 형식 또는 반환 된 금액 지정).

4. 요청 예제 요청 예제에는 엔드 포인트를 사용한 샘플 요청이 포함되어 있으며 일부 매개 변수가 구성되어 있습니다.

5. 응답 예제 및 스키마 응답 예제는 요청 예제의 샘플 응답을 보여줍니다. 응답 스키마는 응답에서 가능한 모든 요소를 ​​정의합니다.

소스- 참조 링크

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.