6장. API에서 필터링
시스템은 컬렉션을 "쿼리 세트"로 인식합니다. 다양한 연산자를 사용하여 필터링할 수 있습니다.
REST API URL 내에서 쿼리 매개변수를 사용하여 정확한 일치, 부분 문자열 포함(__contains), 정수 캐스팅(__int) 및 많은 필드와 같은 기준에 따라 리소스를 필터링하는 방법을 알아봅니다.
프로세스
"foo"라는 이름이 포함된 그룹을 찾으려면 다음을 사용합니다.
http://<gateway server name>/api/controller/v2/groups/?name__contains=foo
http://<gateway server name>/api/controller/v2/groups/?name__contains=fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow 정확한 일치 항목을 찾으려면 다음을 사용합니다.
http://<gateway server name>/api/controller/v2/groups/?name=foo
http://<gateway server name>/api/controller/v2/groups/?name=fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow 리소스가 정수 유형인 경우 문자열 입력 값을 정수로 캐스팅하려면
\_\_int를 끝에 추가해야 합니다.http://<gateway server name>/api/controller/v2/arbitrary_resource/?x__int=5
http://<gateway server name>/api/controller/v2/arbitrary_resource/?x__int=5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음을 사용하여 관련 리소스를 쿼리할 수 있습니다.
http://<gateway server name>/api/gateway/v1/users/?first_name__icontains=kim
http://<gateway server name>/api/gateway/v1/users/?first_name__icontains=kimCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 "kim" 문자열이 포함된 이름이 있는 모든 사용자가 반환됩니다.
한 번에 여러 필드에 대해 필터링할 수도 있습니다.
http://<gateway server name>/api/controller/v2/groups/?name__icontains=test&has_active_failures=false
http://<gateway server name>/api/controller/v2/groups/?name__icontains=test&has_active_failures=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 활성 오류가 없는 "test"가 포함된 모든 그룹이 검색됩니다.
또한 UI가 사용되는 동안 API에서 다양한 기준으로 필터링하는 방법을 확인할 수 있습니다.
추가 리소스
6.1. API의 고급 쿼리 링크 복사링크가 클립보드에 복사되었습니다!
지정된 값과 일치하는 항목으로 반환된 결과 목록을 필터링하는 데 사용되는 추가 쿼리 문자열 매개변수를 사용할 수 있습니다. 필터링을 위해 데이터베이스에 존재하는 필드 및 관계만 사용할 수 있습니다.
지정된 값의 특수 문자가 URL로 인코딩되었는지 확인합니다. 예를 들면 다음과 같습니다.
?field=value%20xyz
?field=value%20xyz
필드는 데이터베이스에 정의된 필드 및 관계에 대해서만 관계를 확장할 수도 있습니다.
?other__field=value
?other__field=value
특정 기준과 일치하는 결과를 제외하려면 field 매개변수 앞에 not__: 접두사를 지정합니다.
?not__field=value
?not__field=value
기본적으로 모든 쿼리 문자열 필터는 AND로 연결되므로 모든 필터와 일치하는 결과만 반환됩니다. 여러 조건 중 하나와 일치하는 결과를 결합하려면 각 쿼리 문자열 매개변수 앞에 or__ 를 붙입니다.
?or__field=value&or__field=othervalue ?or__not__field=value&or__field=othervalue
?or__field=value&or__field=othervalue
?or__not__field=value&or__field=othervalue
기본 AND 필터링에서는 여러 데이터베이스 관계에 걸쳐 필터링되는 각 관련 오브젝트에 모든 필터를 동시에 적용합니다. 반면 체인 필터는 각 관련 오브젝트에 필터를 개별적으로 적용합니다. 이를 사용하려면 query 문자열 매개변수 앞에 chain__: 접두사를 붙입니다.
?chain__related__field=value&chain__related__field2=othervalue ?chain__not__related__field=value&chain__related__field2=othervalue
?chain__related__field=value&chain__related__field2=othervalue
?chain__not__related__field=value&chain__related__field2=othervalue
첫 번째 쿼리를 ? 관련field=value&relatedfield2=othervalue 로 작성하는 경우 관련 개체가 두 조건을 모두 충족하는 기본 오브젝트만 반환합니다. 체인 필터를 사용하여 작성된 대로 각 조건과 일치하는 기본 오브젝트의 교집합을 반환합니다.