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 대상체에서 다음 키 값 쌍을 지원합니다. 이러한 키 중 하나가 요청에 지정되지 않은 경우 기본값이 사용됩니다.

기본값 설명

action

"read"

read, metaData, create, update, deleteduplicate는 지원되는 값입니다. metaData를 사용하여 테이블 및 레이아웃에 대한 정보를 검색합니다. 다른 값을 사용하여 레코드 데이터에 대해 작업을 수행합니다.

version

"v1"

v1, v2vLatest는 지원되는 값입니다. 동작 및 생성된 결과는 API 버전에 따라 다릅니다.

layouts

 

레이아웃 이름입니다.

tables

 

테이블 일치 항목 이름입니다. 테이블 일치 항목 metaData 동작에 필요합니다. layouts 키처럼 작동합니다. 테이블 일치 항목이 지정되면 해당 테이블에 대한 메타데이터가 반환됩니다. 이름을 지정하지 않으면 테이블 일치 항목 목록이 반환됩니다.

query

모든 레코드

각각 필드와 찾기 조건을 지정하는 JSON 대상체의 배열입니다.

recordId

 

레코드의 고유 ID 숫자입니다. queryrecordId 키를 모두 지정할 수 없습니다.

sort

 

현재 레이아웃의 테이블에서 레코드의 정렬 순서를 지정하는 JSON 대상체입니다.

offset

1

현재 레이아웃 테이블의 레코드 범위에서 첫 번째 레코드의 레코드 번호입니다.

limit

100

현재 레이아웃 테이블에서 반환되어야 하는 최대 레코드 수입니다.

layout.response

layouts의 값

다른 레이아웃의 컨텍스트에서 데이터를 검색하려면 레이아웃 이름을 지정합니다.

portal

모든 포털

포털을 지정하는 JSON 대상체입니다.

offset.portal-name

1

관련 레코드 범위에서 첫 번째 포털 레코드의 레코드 번호입니다. portal-name에 대해 포털의 대상체 이름(있는 경우)을 지정해야 하고 그렇지 않은 경우 관련 테이블 이름을 지정해야 합니다.

limit.portal-name

50

반환되어야 하는 최대 관련 레코드 수입니다. portal-name에 대해 포털의 대상체 이름(있는 경우)을 지정해야 하고 그렇지 않은 경우 관련 테이블 이름을 지정해야 합니다.

fieldData

 

생성하거나 업데이트할 레코드 데이터를 지정하는 JSON 대상체입니다.

portalData

 

생성하거나 업데이트할 관련 레코드 데이터를 지정하는 JSON 대상체입니다.

modId

 

(선택 사항) 업데이트 동작의 경우, 업데이트할 레코드의 수정 ID입니다. 레코드의 현재 modId와 일치하지 않으면, 레코드는 수정되지 않습니다.

"options":
{"entrymode":""}

"user"

(선택 사항) 데이터를 작성할 때, 이 스크립트 단계는 필드의 데이터를 입력하는 동안 사용자가 덮어쓰는 것을 허용 옵션이 선택되었는지 여부를 무시하고 대신 entrymode 값을 사용합니다. 에는 다음을 사용하십시오.

  • script: 필드의 데이터 유효성 검사 요구 사항을 무시함

  • user: 필드의 데이터 유효성 검사 요구 사항을 따름

필드 유효성 검증 정의하기를 참조하십시오.

"options":
{"prohibitmode":""}

"user"

(선택 사항) 데이터를 작성할 때, 이 스크립트 단계는 필드의 데이터 입력 중 값을 수정할 수 없음 옵션이 선택되었는지 여부를 무시하고 대신 prohibitmode 값을 사용합니다. 에는 다음을 사용하십시오.

  • 스크립트: 필드의 자동 데이터 입력 요구사항 무시

  • 사용자: 필드의 자동 데이터 입력 요구사항 수행

자동 데이터 입력 정의하기를 참조하십시오.

위에 나열된 키에 대한 자세한 정보는 FileMaker Data API 가이드의 "레코드 작업하기"와 "메타데이터 가져오기" 및 "찾기 요청 수행" 아래의 주제를 참조하십시오.

다음 키는 무시됩니다.

  • databases는 데이터베이스가 항상 스크립트가 실행되는 창에 속하는 데이터베이스이기 때문에 무시됩니다.

  • Authorization은 스크립트의 권한이 현재 사용자의 권한이거나 현재 스크립트에 전체 접근 권한이 부여된 경우 전체 접근 권한이기 때문에 무시됩니다.

  • Content-Type은 요청이 JSON 포맷이어야 하기 때문에 무시됩니다.

  • scriptscript.로 시작하는 모든 키는 무시됩니다. 다른 스크립트를 수행하려면 스크립트 수행 스크립트 단계를 사용하십시오.

오류 처리하기

대상의 JSON 결과에는 messagecode 키를 포함하는 대상체가 있는 messages 키가 하나 이상 포함됩니다. code 값은 FileMaker 오류 코드에 정의된 값입니다. 대부분의 messagecode 값은 FileMaker 호스트에서 웹 서비스로 사용 가능한 FileMaker Data API에서 반환된 값과 동일합니다. 일부 추가 오류는 이 스크립트 단계에 고유하며 요청 옵션을 구문 분석할 때 문제를 식별하는 데 도움이 됩니다. 이러한 추가 오류는 3, 1708 및 1710의 code 값이지만 다양한 message 값을 사용하여 오류에 대한 세부 정보를 제공합니다.

Get(마지막 오류)Get(마지막 오류 세부 정보) 함수는 각각 codemessage 키와 동일한 값을 반환합니다. 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의codemessage와 동일한 "레코드가 유실되었습니다"를 반환합니다.

예제 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의 codemessage와 동일합니다.