FileMaker Data API uitvoeren

Voert een FileMaker Data API-verzoek uit.

Opties 

  • Met Gehele inhoud selecteren wordt de inhoud van een veld of een variabele vervangen. Als u deze optie niet selecteert:

    • Bij een veld wordt alleen het geselecteerde deel van het actieve veld vervangen of worden gegevens bij de invoegpositie ingevoegd. Het invoegpunt bevindt zich standaard aan het eind van de gegevens in het veld.

    • Bij een variabele zonder containergegevens worden gegevens op het einde van de huidige waarde van de variabele ingevoegd. Bij een variabele met containergegevens wordt de inhoud van de variabele vervangen.

  • Met Doel geeft u het veld op waarin u het resultaat wilt invoegen of de variabele die u wilt instellen. Als de variabele niet bestaat, maakt deze scriptstap die (raadpleeg Variabelen gebruiken).

  • Verzoek is een berekening waarin het verzoek als tekst wordt opgegeven. De tekst is een JSON-object met de indeling die hieronder wordt beschreven.

Compatibiliteit 

Product Ondersteund

FileMaker Pro

Ja

FileMaker Go

Ja

FileMaker WebDirect

Ja

FileMaker Server

Ja

FileMaker Cloud

Ja

FileMaker Data API

Ja

Custom Web Publishing

Ja

Afkomstig uit versie 

19.0

Beschrijving 

De FileMaker Data API is een REST-API die beschikbaar is als een webservice voor FileMaker Server en FileMaker Cloud. Webtoepassingen kunnen deze API gebruiken om verzoeken te verzenden en gegevens in JSON-indeling te ontvangen van gehoste FileMaker Pro-bestanden.

Deze scriptstap maakt gebruik van dezelfde onderliggende functionaliteit als de FileMaker Data API op FileMaker-hosts om een script dat wordt uitgevoerd door een FileMaker-product, de mogelijkheid te bieden gegevens in het huidige bestand op te vragen en de gegevens te ontvangen in JSON-indeling. Het verzoek bestaat uit een eenvoudig JSON-object, in plaats van de combinatie van URL, header en verzoektekst die de FileMaker Data API vereist om een webservice van een FileMaker-host te gebruiken. Het resultaat dat wordt geretourneerd in Doel heeft dezelfde JSON-indeling als bij een verzoek van een host via de FileMaker Data API.

Indeling van verzoek

Deze scriptstap ondersteunt de volgende sleutel-waardeparen in het JSON-object dat wordt opgegeven met de optie Verzoek. Als een van deze sleutels niet is opgegeven in het verzoek, wordt de standaardwaarde gebruikt.

Sleutel Standaardwaarde Beschrijving

actie

"read"

read en metaData zijn de enige ondersteunde waarden. Gebruik metaData om informatie op te halen over tabellen en lay-outs.

version

"v1"

v1, v2 en vLatest zijn ondersteunde waarden. De API-versie is bepalend voor het gedrag en de gegenereerde resultaten. Raadpleeg de FileMaker Data API Handleiding.

layouts

 

De naam van een lay-out. Vereist voor de acties read en metaData voor lay-outs.

tables

 

De naam van een tabelvermelding. Vereist voor metaData-acties voor tabelvermeldingen. Werkt op dezelfde manier als de sleutel layouts. Als de tabelvermelding is opgegeven, worden de metagegevens voor die tabel geretourneerd. Als er geen naam is opgegeven, wordt er een lijst met de tabelvermeldingen geretourneerd.

opvraag

all records

Een matrix van JSON-objecten, die elk een veld en zoekcriteria opgeven. Raadpleeg "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

recordId

 

De unieke ID van een record. U kunt niet zowel de sleutel query als recordId opgeven. Raadpleeg de FileMaker Data API Handleiding.

sort

 

Een JSON-object dat de sorteervolgorde opgeeft van records in de tabel van de huidige lay-out. Raadpleeg "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

offset

1

Het recordnummer van de eerste record in een bereik van records in de tabel van de huidige lay-out. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

limit

100

Het maximum aantal records dat moet worden geretourneerd uit de tabel van de huidige lay-out. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

layout.response

waarde uit layouts

Als u de gegevens wilt ophalen in de context van een andere lay-out, geeft u de naam van de lay-out op. Raadpleeg de FileMaker Data API Handleiding.

portal

all portals

Een JSON-object dat een portaal aangeeft. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

offset.portal-name

1

Het recordnummer van de eerste portaalrecord in een bereik van gerelateerde records. Voor portal-name moet u een objectnaam opgeven, als deze bestaat, of anders de gerelateerde tabelnaam. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

limit.portal-name

50

Het maximum aantal gerelateerde records dat moet worden geretourneerd. Voor portal-name moet u een objectnaam opgeven, als deze bestaat, of anders de gerelateerde tabelnaam. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding.

De volgende sleutels worden genegeerd:

  • databases wordt genegeerd omdat het altijd de database is die hoort bij het venster waarin het script wordt uitgevoerd.

  • Authorization wordt genegeerd omdat de privileges van het script overeenkomen met die van de huidige gebruiker of volledige toegang, als aan het huidige script privileges voor volledige toegang zijn toegewezen.

  • Content-Type wordt genegeerd omdat het verzoek de JSON-indeling moet hebben.

  • fieldData, portalData en modId worden genegeerd omdat acties voor maken en bijwerken niet worden ondersteund.

  • script en sleutels die beginnen met script. worden genegeerd. Als u een ander script wilt uitvoeren, gebruikt u de Script uitvoeren scriptstap.

Foutafhandeling

Nadat deze scriptstappen zijn uitgevoerd, geeft de functie Get(LaatsteFout) altijd 0 ("Geen fout") als resultaat, zelfs als er een fout is opgetreden. Dit wijkt af van het gedrag van andere scriptstappen. Als u wilt controleren op fouten, gebruikt u in plaats daarvan het JSON-resultaat in Doel.

Het resultaat bevat ten minste een sleutel messages met een object met daarin de sleutels message en code. De code-waarden zijn de waarden die zijn gedefinieerd in FileMaker-foutcodes. De meeste waarden voor message en code zijn hetzelfde als de waarden die worden geretourneerd door de FileMaker Data API die als webservice beschikbaar is op FileMaker-hosts. Enkele aanvullende fouten zijn uniek voor deze scriptstap en helpen bij het identificeren van problemen tijdens het parseren van de optie Verzoek. Deze aanvullende fouten gebruiken de code-waarden 3, 1708 en 1710 maar er worden allerlei verschillende message-waarden gebruikt om meer details over de fout te geven.

Opmerkingen 

  • Wanneer deze scriptstap wordt uitgevoerd, wordt er een bewerking uitgevoerd op een verborgen venster met behulp van de lay-out die in het verzoek is opgegeven. Het venster wordt gesloten nadat de resultaten zijn geretourneerd.

  • Scriptactiveringen en dialoogvenster voor foutrapportage zijn uitgeschakeld terwijl deze scriptstap wordt uitgevoerd.

  • Als het bestand wordt gehost door FileMaker Server of FileMaker Cloud, bestaan de geretourneerde waarden van containervelden uit URL‘s die kunnen worden gebruikt om de veldinhoud op te halen. Als het bestand lokaal wordt geopend, bestaat het resultaat alleen uit de naam van het bestand in het containerveld.

Voorbeeld 1 

Dit voorbeeldscript retourneert metagegevens voor alle tabelvermeldingen doordat er geen waarde wordt opgegeven voor de sleutel tables. In dit geval gaat het om één brontabel (of basistabel) (namelijk Producten) en twee tabelvermeldingen (Producten en Producten_op_voorraad). In dit voorbeeld wordt de JSONSetElement functie gebruikt om het JSON-object te maken in de optie Verzoek.

Kopiëren
FileMaker Data API uitvoeren [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "action" ; "metaData" ; JSONString ] ; 
    [ "tables" ; "" ; JSONString ] 
) ] 
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.

Kopiëren
{
    "messages" :
    [
        {
            "code" : "0",
            "messages" : "OK"
        }
    ],
    "response"
    {
        "tables"
        [
            {
                "baseTable" : "Producten",
                "naam" : "Producten"
},
{
                "baseTable" : "Producten",
                "name" : "Producten_op_voorraad"
            }
        ]
    }
}

Voorbeeld 2 

Dit voorbeeldscript retourneert op basis van de lay-out Producten de eerste record in de tabel die is gekoppeld aan de lay-out Producten.

Kopiëren
FileMaker Data API uitvoeren [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ;
    [ "layouts" ; "Producten" ; JSONString ] ; 
    [ "limit" ; 1 ; JSONNumber ]
) ] 
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.

Kopiëren
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
      }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData" :
                {
                    "ID" : "FB1",
                    "Name" : "Donuts",
                    "Stock" : 43
                },
                "modId" : "6",
                "portalData" : {},
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoriete bakker",
            "foundCount" : 3,
            "layout" : "Producten",
            "returnedCount" : 1,
            "tabel": "Producten",
            "totalRecordCount" : 3
        }
    }
}

Voorbeeld 3 

Dit voorbeeldscript voert op basis van de lay-out Producten een zoekopdracht uit naar records waarvan het veld Voorraad lager is dan 40, waarna de gevonden set wordt geretourneerd, in aflopende volgorde gesorteerd op het veld Voorraad.

Kopiëren
FileMaker Data API uitvoeren [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Producten" ; JSONString ] ; 
    [ "query" ; "[ { \"Stock\":\"<40\" } ]" ; JSONArray ] ;
    [ "sort" ; "[ { \"fieldName\":\"Voorraad\" , 
                     \"sortOrder\":\"descend\" } ]" ; JSONArray ] ) ]
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.

Kopiëren
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB3",
                    "Name" : "Stokbrood",
                   "Stock" : 34
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "7"
           },
            {
                "fieldData"
                {
                    "ID" : "FB2",
                   "Name" : "Chocoladecake",
                    "Stock" : 23
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "6"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoriete bakker",
            "foundCount" : 2,
            "layout" : "Producten",
            "returnedCount" : 2,
            "table" : "Producten",
            "totalRecordCount" : 3
        }
    }
}

Voorbeeld 4 

Dit voorbeeldscript geeft op basis van de lay-out Producten als resultaat de eerste record in de tabel die is gekoppeld aan de lay-out Producten en als er portaalrijen zijn, worden de eerste twee records als resultaat gegeven nadat de eerste twee zijn overgeslagen.

Kopiëren
FileMaker Data API uitvoeren [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Producten" ; JSONString ] ; 
    [ "limit" ; 1 ; JSONNumber ] ; 
    [ "limit.RelatedProducts" ; 2; JSONNumber ] ; 
    [ "offset.RelatedProducts" ; 2 ; JSONNumber ] 
) ] Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.

Kopiëren
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"

        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Name" : "Donuts",
                    "Stock" : 43
                },
                "modId" : "6",
                "portalData" : {
                    "RelatedProducts" :
                    [
                        {
                            "ID" : "FB4",
                            "Name" : "Oliebollen",
                            "Stock" : 53
                        },
                        {
                            "ID" : "FB5",
                            "Name" : "Gebak",
                            "Stock" : 15
                        }
                    ]
                },
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favoriete bakker",
            "foundCount" : 3,
            "layout" : "Producten",
            "returnedCount" : 1,
            "table" : "Producten",
            "totalRecordCount" : 6
        }
    }
}