8.2. ID 형식 프로토콜
리소스는 리소스 필드의 튜플인 고유 키로 식별할 수 있습니다. 모든 리소스에는 기본 키 번호만 고유 키로 사용할 수 있지만 다른 고유 키가 많이 있을 수 있습니다. 리소스는 ID 형식을 생성할 수 있으므로 다음 규칙을 충족하는 고유 키가 하나 이상 있는 경우 이름이 지정된 URL이 있습니다.
-
키에는
이름
필드인 필드만 포함되거나 가능한 선택 항목이 제한된 텍스트 필드(예: 인증 정보 유형 리소스의kind
필드)만 포함되어야 합니다. - 이전 규칙을 위반하는 유일한 허용 예외 필드는 자체 이외의 리소스와 관련된 다대일 관련 필드이며 슬러그도 사용할 수 있습니다.
Foo
및 Bar
리소스가 있는 경우 Foo
및 Bar
에는 "yes" 또는 "no" 값만 가질 수 있는 이름 필드와 선택 필드가 모두 포함되어 있습니다. 또한 리소스 Foo
에는 Bar
와 관련된 다대일 필드(예: fk
)가 있습니다. foo
에는 고유한 키 튜플(이름
,선택
사항,fk
)이 있으며 Bar
에는 고유한 키 튜플(이름
,선택
)이 있습니다. bar
는 이전 첫 번째 규칙을 충족하기 때문에 이름이 지정된 URL을 포함할 수 있습니다. foo
는 첫 번째 규칙을 위반하더라도 이름이 지정된 URL을 포함할 수도 있습니다. 규칙 번호 1을 위반하는 추가 필드는 Bar
와 Bar와 관련된 many-to-one 필드이며, Bar
는 이름이 지정된 URL을 포함할 수 있습니다.
규칙 번호 1을 충족하는 리소스의 경우 사람이 읽을 수 있는 고유 식별자는 외래 키 필드의 조합이며, +
로 구분됩니다. 구체적으로 위 예제의 리소스 표시줄에는 슬러그 형식 < name>+<choice>가 있습니다
. 필드 순서는 슬러그 형식에서 중요하며
이름
필드는 항상 있는 경우 먼저 오고 나머지 필드가 필드 이름의 사전순으로 정렬되어 있습니다. 예를 들어, Bar
에도 규칙 1을 충족하는
필드가 있고 고유 키가 있는 경우 (이름 , 선택 , a_a_choice
choice
) 이면 슬러그 형식은 <name
>< a_choice><choice
>가 됩니다.
규칙 번호 2를 충족하는 리소스의 경우 추가 외래 키 필드를 역추적하면 결과는 해당 리소스의 오브젝트를 식별하는 리소스 트리입니다. ID 형식을 생성하기 위해 역추적 트리의 각 리소스는 외래 키를 제외한 모든 필드를 사용하여 독립 실행형 형식의 자체 부분을 생성합니다. 마지막으로 모든 부분은 다음과 같은 순서로 ++
로 결합됩니다.
- 첫 번째 식별자 부분으로 독립 실행형 형식을 배치합니다.
- 각 리소스에 대한 고유 ID를 재귀적으로 생성합니다. 기본 리소스는 외래 키(역추적 트리의 자식 노드) 사용을 나타냅니다.
- 생성된 고유 ID를 나머지 ID 구성 요소로 취급합니다. 이러한 ID는 해당 외래 키의 사전순으로 정렬합니다.
-
++
를 사용하여 모든 구성 요소를 결합하여 최종 ID 형식을 생성합니다.
리소스 Foo
에 대한 식별자 형식을 생성할 때 자동화 컨트롤러는 Foo
및 <fk.name>+<fk. name>+<
>+<fk. fk.choice
>의 경우 독립형 형식 <name><choicename>+<fk.choice>+<fk.choice
>로 결합합니다.
지정된 식별자 형식에 따라 식별자를 생성할 때 외래 키가 위치를 가리키지 않을 수 있는 경우가 있습니다. 이 경우 자동화 컨트롤러는 외래 키가 가리켜야 하는 리소스에 해당하는 형식의 부분을 빈 문자열로 대체합니다. 예를 들어 Foo
오브젝트에 name ="alice"
, choice ="yes"
가 있지만 fk 필드 = None
이 있는 경우 결과 식별자는 alice+yes++
입니다.