FileMaker Data API 실행
FileMaker Data API 요청을 실행합니다.
다음도 참조하십시오.
옵션
-
전체 콘텐츠 선택은 필드 또는 변수의 콘텐츠를 대치합니다. 이 옵션을 선택하지 않은 경우:
-
필드의 경우 활성 필드에서 선택된 부분만 대치하거나 삽입 지점에 데이터를 삽입합니다. 기본 삽입 지점은 필드 데이터의 끝입니다.
-
컨테이너 데이터가 없는 변수의 경우 변수의 현재 값 끝에 데이터를 삽입합니다. 컨테이너 데이터를 가지고 있는 변수의 경우 변수의 콘텐츠를 대치합니다.
-
-
대상은 결과를 삽입할 필드 또는 설정할 변수를 지정합니다. 변수가 없는 경우 이 스크립트 단계는 변수를 생성합니다(변수 사용하기 참조).
-
요청은 요청을 텍스트로 지정하는 계산입니다. 텍스트는 아래에 설명된 포맷의 JSON 대상체입니다.
호환성
제품 | 지원 |
---|---|
FileMaker Pro |
예 |
FileMaker Go |
예 |
FileMaker WebDirect |
예 |
FileMaker Server |
예 |
FileMaker Cloud |
예 |
FileMaker Data API |
예 |
사용자 설정 웹 발행 |
예 |
다음 버전에서 시작됨
19.0
설명
FileMaker Data API는 FileMaker Server 및 FileMaker Cloud를 위한 웹 서비스로 사용할 수 있는 REST API입니다. 웹 응용 프로그램은 이 API를 사용하여 호스팅된 FileMaker Pro 파일에서 JSON 포맷으로 요청을 보내고 데이터를 받을 수 있습니다.
FileMaker 호스트에서 FileMaker Data API와 동일한 기본 함수를 사용하는 이 스크립트 단계는 FileMaker 제품에서 수행하는 스크립트가 호스팅 여부에 관계 없이 현재 파일의 데이터를 요청하고 JSON 포맷의 데이터를 수신할 수 있도록 합니다. 이 스크립트 단계는 FileMaker Data API를 사용하여 호스트에 대해 웹 서비스를 호출하지 않도록 하며, API가 호스트에서 활성화되었는지 여부에 의존하지 않습니다. 이 스크립트 단계와 FileMaker Data API 간의 유사성은 오직 반환된 데이터의 JSON 포맷이 동일하다는 것입니다. 요청은 FileMaker 호스트의 웹 서비스를 사용하기 위해 FileMaker Data API에 필요한 URL, 헤더 및 요청 본문의 조합이 아니라 단순한 JSON 대상체입니다. 대상에 반환된 결과는 FileMaker Data API를 통해 호스트에서 요청할 때와 동일한 JSON 포맷입니다.
요청 포맷
이 스크립트 단계는 요청 옵션으로 지정된 JSON 대상체에서 다음 키 값 쌍을 지원합니다. 이러한 키 중 하나가 요청에 지정되지 않은 경우 기본값이 사용됩니다.
키 | 기본값 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
레이아웃 이름입니다. |
|
|
테이블 일치 항목 이름입니다. 테이블 일치 항목 |
|
모든 레코드 |
각각 필드와 찾기 조건을 지정하는 JSON 대상체의 배열입니다. |
|
|
레코드의 고유 ID 숫자입니다. |
|
|
현재 레이아웃의 테이블에서 레코드의 정렬 순서를 지정하는 JSON 대상체입니다. |
|
|
현재 레이아웃 테이블의 레코드 범위에서 첫 번째 레코드의 레코드 번호입니다. |
|
|
현재 레이아웃 테이블에서 반환되어야 하는 최대 레코드 수입니다. |
|
|
다른 레이아웃의 컨텍스트에서 데이터를 검색하려면 레이아웃 이름을 지정합니다. |
|
모든 포털 |
포털을 지정하는 JSON 대상체입니다. |
|
|
관련 레코드 범위에서 첫 번째 포털 레코드의 레코드 번호입니다. |
|
50 |
반환되어야 하는 최대 관련 레코드 수입니다. |
|
|
생성하거나 업데이트할 레코드 데이터를 지정하는 JSON 대상체입니다. |
|
|
생성하거나 업데이트할 관련 레코드 데이터를 지정하는 JSON 대상체입니다. |
|
|
(선택 사항) 업데이트 동작의 경우, 업데이트할 레코드의 수정 ID입니다. 레코드의 현재 modId와 일치하지 않으면, 레코드는 수정되지 않습니다. |
|
|
(선택 사항) 데이터를 작성할 때, 이 스크립트 단계는 필드의 데이터를 입력하는 동안 사용자가 덮어쓰는 것을 허용 옵션이 선택되었는지 여부를 무시하고 대신
필드 유효성 검증 정의하기를 참조하십시오. |
|
|
(선택 사항) 데이터를 작성할 때, 이 스크립트 단계는 필드의 데이터 입력 중 값을 수정할 수 없음 옵션이 선택되었는지 여부를 무시하고 대신
자동 데이터 입력 정의하기를 참조하십시오. |
위에 나열된 키에 대한 자세한 정보는 FileMaker Data API 가이드의 "레코드 작업하기"와 "메타데이터 가져오기" 및 "찾기 요청 수행" 아래의 주제를 참조하십시오.
다음 키는 무시됩니다.
-
databases
는 데이터베이스가 항상 스크립트가 실행되는 창에 속하는 데이터베이스이기 때문에 무시됩니다. -
Authorization
은 스크립트의 권한이 현재 사용자의 권한이거나 현재 스크립트에 전체 접근 권한이 부여된 경우 전체 접근 권한이기 때문에 무시됩니다. -
Content-Type
은 요청이 JSON 포맷이어야 하기 때문에 무시됩니다. -
script
및script.
로 시작하는 모든 키는 무시됩니다. 다른 스크립트를 수행하려면 스크립트 수행 스크립트 단계를 사용하십시오.
오류 처리하기
대상의 JSON 결과에는 message
및 code
키를 포함하는 대상체가 있는 messages
키가 하나 이상 포함됩니다. code
값은 FileMaker 오류 코드에 정의된 값입니다. 대부분의 message
및 code
값은 FileMaker 호스트에서 웹 서비스로 사용 가능한 FileMaker Data API에서 반환된 값과 동일합니다. 일부 추가 오류는 이 스크립트 단계에 고유하며 요청 옵션을 구문 분석할 때 문제를 식별하는 데 도움이 됩니다. 이러한 추가 오류는 3, 1708 및 1710의 code
값이지만 다양한 message
값을 사용하여 오류에 대한 세부 정보를 제공합니다.
Get(마지막 오류) 및 Get(마지막 오류 세부 정보) 함수는 각각 code
및 message
키와 동일한 값을 반환합니다. Get(마지막 오류 위치)는 스크립트에서 오류가 발생한 위치를 반환합니다.
참고
-
이 스크립트 단계는 이 스크립트 단계를 수행하는 스크립트를 포함하여 실행 중인 모든 윈도우나 스크립트의 컨텍스트와 관련이 없는 자체 세션에서 실행됩니다. 따라서, 네트워크를 통해 호스트에 FileMaker Data API 호출을 하는 것처럼 이 스크립트 단계를 사용합니다. 그 결과, 이 스크립트 단계가 수행되는 동안 스크립트 트리거 및 오류 보고 대화상자가 비활성화됩니다.
-
파일이 FileMaker Server 또는 FileMaker Cloud에서 호스팅되는 경우 컨테이너 필드의 반환된 값은 필드 콘텐츠를 가져오는 데 사용할 수 있는 URL입니다. 파일이 로컬에서 열리면 컨테이너 필드의 파일 이름만 반환됩니다.
예제 1
tables
키에 값을 지정하지 않음으로써 모든 테이블 일치 항목에 대한 메타데이터를 반환합니다. 이 경우 하나의 소스(또는 기본) 테이블(Products)과 두 개의 테이블 일치 항목(Products 및 Products_InStock)이 있습니다. 이 예에서는 JSONSetElement 함수를 사용하여 요청
옵션에 JSON 대상체를 생성합니다.
FileMaker Data API 실행[ 선택 ; 대상: $$result ;
JSONSetElement("{}" ;
[ "action" ; "metaData" ; JSONString ] ;
[ "tables" ; "" ; JSONString ]
) ]
변수 설정[$$result ; JSONFormatElements($$result) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"tables" :
[
{
"baseTable" : "제품",
"name" : "제품"
},
{
"baseTable" : "제품",
"이름" : "Products_InStock"
}
]
}
}
예제 2
제품 레이아웃을 기반으로 제품 레이아웃과 연결된 테이블의 첫 번째 레코드를 반환합니다.
FileMaker Data API 실행[ 선택 ; 대상: $$result ;
JSONSetElement("{}" ;
[ "레이아웃" ; "제품" ; JSONString ] ;
[ "제한" ; 1 ; JSONNumber ]
) ]
변수 설정[$$result ; JSONFormatElements($$result) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "도너츠",
"Stock" : 43
},
"modId" : "6",
"portalData" : {},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "즐겨찾는 베이커리",
"foundCount" : 3,
"layout" : "제품",
"returnedCount" : 1,
"table" : "제품",
"totalRecordCount" : 3
}
}
}
예제 3
제품 레이아웃을 기반으로 Stock 필드가 40 미만인 레코드에 대해 찾기를 수행하고 Stock 필드별로 정렬된 찾기 세트를 내림차순으로 반환합니다.
FileMaker Data API 실행[ 선택 ; 대상: $$result ;
JSONSetElement("{}" ;
[ "레이아웃" ; "제품" ; JSONString ] ;
[ "쿼리" ; "[ { \"Stock\":\"<40\" } ]" ; JSONArray ] ;
[ "정렬" ; "[ { \"fieldName\":\"Stock\" ,
\"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
변수 설정[$$result ; JSONFormatElements($$result) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB3",
"Name" : "바게트",
"Stock" : 34
},
"modId" : "1",
"portalData" : {},
"recordId" : "7"
},
{
"fieldData" :
{
"ID" : "FB2",
"Name" : "초콜릿 케이크",
"Stock" : 23
},
"modId" : "1",
"portalData" : {},
"recordId" : "6"
}
],
"dataInfo" :
{
"database" : "즐겨찾는 베이커리",
"foundCount" : 2,
"layout" : "제품",
"returnedCount" : 2,
"table" : "제품",
"totalRecordCount" : 3
}
}
}
예제 4
제품 레이아웃에 따라 제품 레이아웃과 연관된 테이블의 첫 번째 레코드를 반환하고, 포털 행이 있는 경우 처음 2개를 건너뛰고 처음 2개의 레코드를 반환합니다.
FileMaker Data API 실행 [ 선택 ; 대상: $$result ;
JSONSetElement ( "{}" ;
[ "레이아웃" ; "제품" ; JSONString ] ;
[ "제한" ; 1 ; JSONNumber ] ;
[ "['limit.RelatedProducts']" ; 2; JSONNumber ] ;
[ "['offset.RelatedProducts']" ; 2 ; JSONNumber ]
) ]
변수 설정 [ $$result ; JSONFormatElements ( $$result ) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "도너츠",
"Stock" : 43
},
"modId" : "6",
"portalData" : {
"RelatedProducts" :
[
{
"ID" : "FB4",
"Name" : "도너츠 구멍",
"Stock" : 53
},
{
"ID" : "FB5",
"Name" : "쇼트케이크",
"Stock" : 15
}
]
},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "즐겨찾는 베이커리",
"foundCount" : 3,
"layout" : "제품",
"returnedCount" : 1,
"table" : "제품",
"totalRecordCount" : 6
}
}
}
예제 5
제품 레이아웃을 기반으로 recordId
에 지정된 레코드를 수정하여 재고 및 이름 필드의 값을 업데이트합니다.
FileMaker Data API 실행[ 선택 ; 대상: $$result ;
JSONSetElement ( "{}" ;
[ "동작" ; "업데이트" ; JSONString ] ;
[ "레이아웃" ; "제품" ; JSONString ] ;
[ "레코드 Id" ; "4" ; JSONString ] ;
[ "fieldData" ; "{ \"재고\" : 14 ,
\"이름\" : \"바닐라 케이크, 큼\" }" ; JSONObject ]
) ]
변수 설정 [ $$result ; JSONFormatElements ( $$result ) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"modId" : "6"
}
}
recordId
로 지정된 레코드가 존재하지 않는 경우, Get(마지막 오류)는 101을 반환하고 Get(마지막 오류 세부 정보)는 $$result의code
및 message
와 동일한 "레코드가 유실되었습니다"를 반환합니다.
예제 6
제품 레이아웃을 기반으로 레코드를 생성하고 재고, ID, 이름 필드의 값을 설정합니다. ID 필드는 일련번호를 자동 입력하도록 설정되어 있고 데이터 입력 중 값을 수정할 수 없음 옵션이 활성화되어 있으므로 options
대상체에서 prohibitmode
키를 script
로 설정하면 해당 자동 입력 요구사항을 덮어쓰고 ID 필드를 지정된 대로 설정합니다.
FileMaker Data API 실행 [ 선택 ; 대상: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "create" ; JSONString ] ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \"Stock\" : 14 ,
\"ID\" : \"FB42\" ,
\"Name\" : \"Croissants\" }" ; JSONObject ]
) ]
변수 설정 [ $$result ; JSONFormatElements ( $$result ) ]
전역 변수 $$result에 반환된 JSON 데이터는 이 형식을 갖습니다.
{
"messages" :
[
{
"code" : "0",
"message" : "승인"
}
],
"response" :
{
"modId" : "0",
"recordId" : "7"
}
}
또한 ID 필드에 고유한 값을 입력하도록 유효성 검증이 설정되어 있고 ID 값이 "FB42"인 레코드가 이미 존재하는 경우, Get(LastError)는 504를 반환하고 Get(LastErrorDetail)은 "필드 값이 유효성 입력 옵션에서 요청된 것처럼 고유하지 않습니다"를 반환하며 이는 $$result의 code
및 message
와 동일합니다.