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, ongeacht of dit bestand gehost is of niet, en de gegevens te ontvangen in JSON-indeling. Deze scriptstap maakt geen webservice-aanroep naar een host met behulp van de FileMaker Data API, en is ook niet afhankelijk van of de API al dan niet is ingeschakeld op een host. De gelijkenis tussen deze scriptstap en de FileMaker Data API is vooral dat de JSON indeling van de geretourneerde gegevens hetzelfde is. 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"

lezen, metagegevens, maken, updaten, verwijderen en dupliceren zijn de ondersteunde waarden. Gebruik metaData om informatie op te halen over tabellen en lay-outs. Gebruik de andere waarden om te reageren op recordgegevens.

version

"v1"

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

layouts

 

De naam van een lay-out.

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.

recordId

 

De unieke ID van een record. U kunt niet zowel de sleutel query als recordId opgeven.

sort

 

Een JSON-object dat de sorteervolgorde opgeeft van records in de tabel van de huidige lay-out.

offset

1

Het recordnummer van de eerste record in een bereik van records in de tabel van de huidige lay-out.

limit

100

Het maximum aantal records dat moet worden geretourneerd uit de tabel van de huidige lay-out.

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.

portal

all portals

Een JSON-object dat een portaal aangeeft.

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.

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.

fieldData

 

Een JSON-object dat recordgegevens specificeert die moeten worden gemaakt of bijgewerkt.

portalData

 

Een JSON-object dat gerelateerde recordgegevens opgeeft die moeten worden gemaakt of bijgewerkt.

modId

 

(Optioneel) voor een updateactie, de wijzigings-ID van de bij te werken record. Als deze niet overeenkomt met de huidige modus-ID van de record, wordt de record niet gewijzigd.

"opties":
{"entrymode":"waarde"}

"user"

(Optioneel) Bij het schrijven van gegevens negeert deze scriptstap of de optie Gebruiker toestaan om bevestiging te negeren tijdens gegevensinvoer is geselecteerd en gebruikt in plaats daarvan de waarde entrymode. Gebruik voor waarde:

  • script: negeer de vereisten voor gegevensvalidatie van een veld

  • gebruiker: volg de vereisten voor gegevensvalidatie van een veld

Raadpleeg Veldbevestiging definiëren.

"opties":
{"prohibitmode":"waarde"}

"user"

(Optioneel) Bij het schrijven van gegevens negeert deze scriptstap of de optie Wijzigen van waarde tijdens gegevensinvoer verbieden in een veld is geselecteerd en gebruikt deze in plaats daarvan de waarde prohibitmode. Gebruik voor waarde:

  • script: negeer de vereisten voor automatische gegevensinvoer van een veld

  • gebruiker: volg de vereisten voor automatische gegevensinvoer van een veld

Raadpleeg Automatische gegevensinvoer definiëren.

Voor meer informatie over de hierboven vermelde sleutels, bekijkt u de onderwerpen onder "Werken met records" en "Metagegevens ophalen" en "Zoekopdracht uitvoeren" in de handleiding van de FileMaker Data API.

De volgende sleutels worden genegeerd:

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

  • Autorisatie 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.

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

Foutafhandeling

Het JSON-resultaat in Doel bevat minimaal een berichten-sleutel met een object dat bericht- en code-sleutels bevat. 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.

De functies Get (LaatsteFout) en Get (LaatsteFoutGegevens) geven dezelfde waarden als resultaat als in respectievelijk de code- en berichten-sleutels. Get (LaatsteFoutLocatie) geeft waar de fout is opgetreden als resultaat in het script.

Opmerkingen 

  • Deze scriptstap wordt uitgevoerd in een eigen sessie die geen verband houdt met de context van elk venster of script dat wordt uitgevoerd, inclusief het script dat deze scriptstap uitvoert. Gebruik deze scriptstap daarom alsof u een FileMaker Data API-aanroep doet naar een host via het netwerk. Als zodanig worden scriptactiveringen en dialoogvensters voor foutrapportage 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 [ Selecteer ; Doel: $$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
        }
    }
}

Voorbeeld 5 

Wijzigt op basis van de lay-out Producten de record die is opgegeven door de record-ID, waarbij de waarden van de velden Voorraad en Naam worden bijgewerkt.

Kopiëren
FileMaker Data API uitvoeren [ Selecteer ; Doel: $$result ; 
JSONSetElement ( "{}" ; 
    [ "actie" ; "update" ; JSONString ] ;
    [ "layouts" ; "Producten" ; JSONString ] ;
    [ "recordID" ; "4" ; JSONString ] ;
    [ "Gegevensveld" ; "{ \"Stock\" : 14 , 
       \"Naam\" : \"Vanillecake, groot\" }" ; JSONObject ] 
) ]
variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

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

Kopiëren
{
    "berichten"
    [
        {
            "code" : "0",
            "bericht" : "OK"
        }
    ],
    "antwoord"
    {
        "modId" : "6"
    }
}

Als de record die is opgegeven door record-ID niet bestaat, rgeeft Get(LaatsteFout) 101 als resultaat en Get(DetailsLaatsteFout) retourneert "Record ontbreekt", wat hetzelfde is als de code en het bericht in $$result.

Voorbeeld 6 

Maakt op basis van de lay-out Producten een record en stelt de waarden in van de velden Voorraad, ID en Naam. Omdat het veld ID is ingesteld op het automatisch invoeren van een serienummer en de optie Wijzigen van waarde tijdens gegevensinvoer verbieden is ingeschakeld, wordt de vereiste voor automatisch invoeren genegeerd als u de toets prohibitmode instelt op script in het object opties. Het veld ID wordt ingesteld op de opgegeven waarde.

Kopiëren
FileMaker Data API uitvoeren [ Selecteer ; Doel: $$result ; 
        JSONSetElement ( "{}" ; 
        [ "actie" ; "maken" ; JSONString ] ;
        [ "lay-outs" ; "Producten" ; JSONString ] ;
        [ "opties" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
        [ "fieldData" ; "{ \"Voorraad\" : 14 , 
           \"ID\" : \"FB42\" ,
           \"Naam\" : \"Croissants\" }" ; JSONObject ] 
        ) ]
        Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]

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

Kopiëren
{
        "berichten"
        [
           {
               "code" : "0",
               "bericht" : "OK"
           }
        ],
        "antwoord"
        {
           "modId" : "0",
           "recordId" : "7"
        }
        }

Als het ID-veld ook een validatie heeft die is ingesteld om een ​​unieke waarde te vereisen en er al een record met de ID-waarde "FB42" bestaat, zou Get(LastError) 504 retourneren en zou Get(LastErrorDetail) "De waarde in het veld is niet uniek, zoals vereist is in de opties voor bevestigingsinvoer" retourneren, wat hetzelfde zou zijn als code en bericht in $$result.