Utför FileMaker Data API

Utför en FileMaker Data API-förfrågan.

Tillval 

  • Markera hela innehållet ersätter allt innehåll i fältet eller variabeln. Om du inte väljer det här alternativet:

    • För ett fält ersätts enbart den valda delen av det aktiva fältet, eller också infogas data vid inmatningspunkten. Den förvalda inmatningspunkten finns i slutet av fältets data.

    • För en variabel som inte innehåller containerdata infogas data i slutet av variabelns aktuella värde. För en variabel med containerdata ersätts innehållet i variabeln.

  • Mål anger det fält där resultatet ska infogas eller den variabel som ska anges. Om det inte finns någon variabel kommer detta scriptsteg att skapa en (mer information finns i Använda variabler).

  • Förfrågan är en beräkning som anger förfrågan som text. Texten är ett JSON-objekt i det format som beskrivs nedan.

Kompatibilitet 

Produkt Stöds

FileMaker Pro

Ja

FileMaker Go

Ja

FileMaker WebDirect

Ja

FileMaker Server

Ja

FileMaker Cloud

Ja

FileMaker Data API

Ja

Anpassad webbpublicering

Ja

Ursprungsversion 

19.0

Beskrivning 

FileMaker Data API är ett REST API som är tillgängligt som en webbtjänst för FileMaker Server och FileMaker Cloud. Webbapplikationer kan använda det här API:et för att skicka förfrågningar och ta emot data i JSON-format från delade FileMaker Pro-filer.

Med hjälp av samma underliggande funktion som FileMaker Data API mot FileMaker-värdar kan det här scriptsteget användas för att låta ett script som körs av en FileMaker-produkt efterfråga data i den aktuella filen, oavsett om den är delad eller inte, och ta emot dessa data i JSON-format. Det här scriptsteget gör inget webbtjänstanrop till en värd med hjälp av FileMaker Data API, och det är inte heller beroende av på om API:et är aktiverat på en värd. Den enda likheten mellan det här scriptsteget och FileMaker Data API är att JSON-formatet är detsamma för returnerade data. Förfrågan är ett enkelt JSON-objekt, i stället för den kombination av URL, huvud och frågetext som krävs av FileMaker Data API för att använda en FileMaker-värds webbtjänst. Resultatet som returneras i Mål har samma JSON-format som när det begärs från en värd via FileMaker Data API.

Förfrågans format

Det här scriptsteget har stöd för följande par av nyckel–värde i JSON-objektet som anges av tillvalet Förfrågan. Om en av dessa nycklar inte har angetts i förfrågan används standardvärdet.

Nyckel Standardvärde Beskrivning

action

"read"

read, metaData, create, update, delete och duplicate är de värden som kan användas. Använd metaData om du vill hämta information om tabeller och layouter. Använd de andra värdena för att agera på postdata.

version

"v1"

v1, v2 och vLatest är de värden som kan användas. Beteende och resultat varierar beroende på API-versionen.

layouts

 

Ett layoutnamn.

tables

 

Namnet på en tabellförekomst. Krävs för åtgärden metaData för tabellförekomster. Fungerar som nyckeln layouts. Om tabellförekomsten anges returneras metadata för den tabellen. Om inget namn anges returneras listan över tabellförekomster.

fråga

all records

En matris med JSON-objekt som vart och ett anger ett fält och sökvillkor.

recordId

 

Det unika ID-numret för en post. Du kan inte ange både en query- och en recordId-nyckel.

sort

 

Ett JSON-objekt som specificerar posters sorteringsordning i den aktuella layoutens tabell.

offset

1

Postnumret för den första posten i ett intervall av poster i den aktuella layoutens tabell.

limit

100

Det högsta antalet poster som ska returneras från den aktuella layoutens tabell.

layout.response

värde från layouts

Ange ett layoutnamn om du vill hämta data i en annan layouts kontext.

portal

all portals

Ett JSON-objekt som anger en portal.

offset.portal-name

1

Postnumret för den första portalposten i ett intervall av relaterade poster. För portal-name måste du specificera portalens objektnamn, om ett sådant finns. Specificera annars det relaterade tabellnamnet.

limit.portal-name

50

Det högsta antalet relaterade poster som ska returneras. För portal-name måste du specificera portalens objektnamn, om ett sådant finns. Specificera annars det relaterade tabellnamnet.

fieldData

 

Ett JSON-objekt som anger postdata som ska skapas eller uppdateras.

portalData

 

Ett JSON-objekt som anger relaterade postdata som ska skapas eller uppdateras.

modId

 

(Valfritt) För en uppdateringsåtgärd är det här modifierings-ID för posten som ska uppdateras. Om det inte matchar aktuellt modId för posten ändras inte posten.

"tillval":
{"entrymode":"värde"}

"user"

(Valfritt) När data skrivs ignorerar det här scriptsteget huruvida ett alternativet Tillåt att användaren åsidosätter kontrollen vid datainmatning har valts för ett fält och använder i stället värdet entrymode. För värde, använd:

  • script: ignorera ett fälts krav på datavalidering

  • user: följ ett fälts krav på datavalidering

Mer information finns i Definiera fältkontroll.

"tillval":
{"prohibitmode":"värde"}

"user"

(Valfritt) När data skrivs ignorerar det här scriptsteget huruvida alternativet Förhindra ändring av värdet vid datainmatning har valts för ett fält och använder i stället värdet prohibitmode. För värde, använd:

  • script: ignorera ett fälts krav för automatisk datainmatning

  • user: följ ett fälts krav för automatisk datainmatning

Mer information finns i Definiera automatisk inmatning av data.

Mer information om nycklarna ovan finns i avsnitten Work with records (Arbeta med poster) samt Get metadata (Hämta metadata) och Perform av find request (Utföra en sökning) i FileMaker Data API Guide.

Följande nycklar ignoreras:

  • databases ignoreras eftersom databasen alltid är den som tillhör det fönster där scriptet körs.

  • Authorization ignoreras eftersom scriptets behörighet antingen motsvarar den aktuella användarens eller full åtkomst om det aktuella scriptet har tilldelats fullständig behörighet.

  • Content-Type ignoreras eftersom förfrågan måste vara i JSON-format.

  • script och alla nycklar som börjar med script. ignoreras. Använd i stället Scriptsteget Utför script om du vill utföra ett annat script.

Felhantering

JSON-resultatet i Target innehåller som minst nyckeln messages med ett objekt som innehåller nycklarna message och code. Värdena för code är de som definieras i FileMaker-felkoder. De flesta värden för message och code är desamma som de som returneras av FileMaker Data API som är tillgänglig som webbtjänst från FileMaker-värdar. Det finns några ytterligare fel som är unika för det här scriptsteget och som hjälper till att identifiera problem vid tolkning av tillvalet Förfrågan. Dessa ytterligare fel använder värdena 3, 1708 och 1710 för code, men många olika värden för message med mer information om felet.

Funktionerna Get ( SenasteFel ) och Get ( SenasteFelDetalj ) returnerar samma värden som i nycklarna code och message. Get ( SenasteFelPlats ) returnerar var felet uppkom i scriptet.

Kommentarer 

  • Det här scriptsteget körs i sin egen session, fristående från eventuella fönster eller script som körs, inklusive scriptet som utför det här scriptsteget. Använd därför det här scriptsteget som om du gör ett FileMaker Data API-anrop till en värd över nätverket. Scripttriggers och eventuella dialogrutor om rapporterade fel inaktiveras medan det här scriptsteget utförs.

  • Om filen delas med FileMaker Server eller FileMaker Cloud som värd är de returnerade värdena för containerfält URL:er som kan användas för att hämta fältinnehållet. Om filen har öppnats lokalt returneras endast filens namn i containerfältet.

Exempel 1 

Returnerar metadata för alla tabellförekomster genom att inte ange något värde för nyckeln tables. I det här fallet finns det en källtabell (eller bastabell), (Produkter) och två tabellförekomster (Produkter och Produkter_PåLager). I det här exemplet används Funktionen JSONSetElement för att skapa JSON-objektet i tillvalet Förfrågan.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$result ; JSONSetElement ( "{}" ; 
    [ "action" ; "metaData" ; JSONString ] ; 
    [ "tables" ; "" ; JSONString ] 
) ] 
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "tables"
        [
            {
                "baseTable" : "Produkter",
                "name" : "Produkter"
            },
            {
                "baseTable" : "Produkter",
                "name" : "Produkter_PåLager"
            }
        ]
    }
}

Exempel 2 

Baserat på layouten Produkter returneras den första posten i tabellen som är associerad med layouten Produkter.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Produkter" ; JSONString ] ;
    [ "limit" ; 1 ; JSONNumber ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Name" : "Munkar",
                    "Lager" : 43
                },
                "modId" : "6",
                "portalData" : {},
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoritbageri",
            "foundCount" : 3,
            "layout" : "Produkter",
            "returnedCount" : 1,
            "table" : "Produkter",
            "totalRecordCount" : 3
        }
    }
}

Exempel 3 

Utifrån layouten Produkter utförs en sökning efter poster där fältet Lager är mindre än 40 och returnerar sökresultatet sorterat efter fältet Lager i fallande ordning.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Produkter" ; JSONString ] ;
    [ "query" ; "[ { \"Lager\":\"<40\" } ]" ; JSONArray ] ;
    [ "sort" ; "[ { \"fieldName\":\"Lager\" , 
                    \"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB3",
                    "Name" : "Baguette",
                    "Lager" : 34
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "7"
            },
            {
                "fieldData"
                {
                    "ID" : "FB2",
                    "Name" : "Chokladtårta",
                    "Lager" : 23
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "6"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoritbageri",
            "foundCount" : 2,
            "layout" : "Produkter",
            "returnedCount" : 2,
            "table" : "Produkter",
            "totalRecordCount" : 3
        }
    }
}

Exempel 4 

Returnerar, baserat på layouten Produkter, den första posten i den tabell som är kopplad till layouten Produkter och, om det finns portalrader, returnerar de första 2 posterna sedan de första 2 har hoppat över.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Produkter" ; JSONString ] ;
    [ "limit" ; 1 ; JSONNumber ] ;
    [ "limit.RelatedProducts" ; 2; JSONNumber ] ; 
    [ "offset.RelatedProducts" ; 2 ; JSONNumber ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Name" : "Munkar",
                    "Lager" : 43
                },
                "modId" : "6",
                "portalData" : {
                    "RelatedProducts" :
                    [
                        {
                            "ID" : "FB4",
                            "Name" : "Munkhål",
                            "Lager" : 53
                        },
                        {
                            "ID" : "FB5",
                            "Name" : "Mördegskaka",
                            "Lager" : 15
                        }
                    ]
                },
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoritbageri",
            "foundCount" : 3,
            "layout" : "Produkter",
            "returnedCount" : 1,
            "table" : "Produkter",
            "totalRecordCount" : 6
        }
    }
}

Exempel 5 

Baserat på layouten Produkter ändras posten som specificeras av recordId och uppdaterar värdena i fälten Lager och Namn.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$result ; 
JSONSetElement ( "{}" ; 
    [ "action" ; "update" ; JSONString ] ;
    [ "layouts" ; "Products" ; JSONString ] ;
    [ "recordId" ; "4" ; JSONString ] ;
    [ "fieldData" ; "{ \"Lager\" : 14 , 
       \"Namn\" : \"Vaniljtårta, stor\" }" ; JSONObject ] 
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "modId" : "6"
    }
}

Om posten som specificeras av recordId inte finns skulle Get ( SenasteFel ) returnera 101 och Get ( SenasteFelDetalj ) skulle returnera "Posten saknas", vilket blir samma som code och message i $$result.

Exempel 6 

Baserat på layouten Produkter skapas en post och värden anges i fälten Lager, ID och Namn. Eftersom fältet ID är inställt på att automatiskt ange ett serienummer och alternativet Förhindra ändring av värde under datainmatning är aktiverat, ohc om du anger nyckeln prohibitmode till script i objektet options åsidosätts kravet på automatiskt inmatning och fältet ID anges enligt specifikationen.

Kopiera
Utför FileMaker Data API [ Välj ; Mål: $$resultat ; 
        JSONSetElement ( "{}" ; 
        [ "action" ; "create" ; JSONString ] ;
        [ "layouts" ; "Produkter" ; JSONString ] ;
        [ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
        [ "fieldData" ; "{ \"Lager\" : 14 , 
           \"ID\" : \"FB42\" ,
           \"Name\" : \"Croissanter\" }" ; JSONObject ] 
        ) ]
        Ange variabel [ $$resultat ; JSONFormatElements ( $$resultat ) ]

De JSON-data som returneras i den globala variabeln $$result har det här formatet.

Kopiera
{
        "messages"
        [
           {
               "code" : "0",
               "message" : "OK"
           }
        ],
        "response"
        {
           "modId" : "0",
           "recordId" : "7"
        }
        }

Om fältet ID även hade validering inställd på att kräva ett unikt värde och det redan fanns en post med ID-värdet "FB42”, skulle Get ( SenasteFel ) returnera 504 och Get ( SenasteFelDetalj ) skulle returnera "Värdet i fältet är inte unikt, vilket angetts som ett krav i kontrolltillvalen". Det motsvarar alltså code och message i $$resultat.