Nice programing

퍼블릭 API의 리소스에 UUID를 사용해야합니까?

nicepro 2020. 11. 2. 19:37
반응형

퍼블릭 API의 리소스에 UUID를 사용해야합니까?


SaaS 애플리케이션을 구축 중이며 현재 데이터 저장소 구현 (Postgres 자동 증가 ID)에 연결되지 않은 리소스에 대한 ID를 노출하려고합니다. 이 Stack Overflow 게시물 ( 1 2 )은 로컬 고유 ID를 만드는 것이 어렵고 물론 거의 모든 언어로 쉽고 안전하게 생성되는 UUID를 사용할 수 있다고 제안합니다.

이 접근 방식에 만족하지만 동일한 작업을 수행하는 대규모 SaaS / 호스팅 플레이어의 API를 찾을 수없는 이유가 궁금합니다. 예를 들면 :

따라서 기본적으로 아무도 UUID를 사용하지 않는 것 같습니다. 이것에 대한 이유가 있습니까-여기에서 발명되지 않았거나 영리한 내부 ID 알고리즘 또는 다른 것입니까? 제 경우에는 내부 알고리즘이없는 경우 UUID를 사용하는 것이 가장 합리적입니까?


귀하가 나열한 다른 공급 업체는 내부적으로 UUID와 유사한 것을 사용하면서 더 작은 숫자를 노출 할 수 있도록 자체 ID 또는 해싱 체계를 가질 수 있습니다. 그러나 결국 질문을해야합니다. URI가 사람이 아닌 코드 (API 클라이언트)에 의해 사용되도록 의도 된 경우 왜 중요할까요?

벤더들이 한 일에 너무 놀라지 마십시오. (a) 그들이 "올바른"일을하고 있고 (b) 그들의 요구가 당신과 같다는 보장은 없습니다.

계속해서 UUID를 사용하십시오.


여기에서 네 가지 주요 옵션을 고려할 수 있다고 생각합니다.

  1. UUID를 데이터베이스 기본 키로 사용하지만 Long을 사용하는 것 보다 계산 비용이많이들 수 있습니다.

  2. Long 매핑 계층에 대한 UUID를 생성합니다. 이렇게하면 REST 리소스를 게시 할 수 있지만 Long PK를 사용하여 깨끗한 데이터베이스 구조를 유지할 수 있습니다.

  3. UUID 값을 유지하기 위해 데이터베이스 테이블에 대체 키 열을 만듭니다.

  4. UUID를 사용하는 대신 각 고객 및 원래 PK에 대한 사용자 지정 시드를 사용하여 즉석에서 생성 된 암호화 ID를 가질 수 있습니다. 이 접근법은 더 많은 실행 오버 헤드를 부과하지만 일부 시나리오에서는 흥미로울 수 있습니다. 고객은 시드 또는 알고리즘에 액세스 할 수 없기 때문에 항상 암호화 된 데이터를 사용해야합니다.

참고 URL : https://stackoverflow.com/questions/7114694/should-i-use-uuids-for-resources-in-my-public-api

반응형