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와 동일합니다.