Jump to content

API:Continue/nl

From mediawiki.org
This page is a translated version of the page API:Continue and the translation is 100% complete.
MediaWiki-versie:
1.26

Heel vaak krijgt u niet alle gewenste gegevens in één API-query. Wanneer dit gebeurt, voegt de API een extra element (getiteld continue) toe aan de resultaten om aan te geven dat er meer gegevens zijn.

Het element dat wordt geretourneerd, bestaat uit twee delen: een deel is een subelement met de titel continue. Dit heeft meestal een bijbehorende waarde die de symbolen || bevat als er gegevens beschikbaar zijn om verder te gaan. Het tweede deel is een subelement (of meerdere subelementen) waarvan de titel de afkorting is van de lijst die in de zoekopdracht wordt gebruikt, voorafgegaan door het woord continue. (Dus, bijvoorbeeld, het subelement voor een query met categorymembers zou cmcontinue zijn, het subelement voor een query met allcategories zou accontinue zijn, het subelement voor een query met protectedtitles zou ptcontinue zijn, enz.)

Om verdere gegevens te verkrijgen wanneer het element continue aanwezig is, moet u het tweede subelement toevoegen als parameter aan het volgende API-verzoek. Als een query met behulp van de lijst allcategories bijvoorbeeld aanvullende resultaten bevat, moet de volgende API-query die wordt uitgevoerd accontinue= als parameter bevatten, samen met de waarde van accontinue in de resultaten van de eerste query. Om alle resultaten te krijgen, kan dit worden herhaald totdat een API-resultaat geen element van continue in de resultaten heeft, wat aangeeft dat er geen gegevens meer zijn die overeenkomen met de vraag.

batchcomplete

Wanneer u een API-verzoek doet met behulp van een generator samen met eigenschappen, kan het API-resultaat een signaal zijn om door te gaan omdat er tot nu toe meer eigenschappen voor de pagina's moeten worden opgehaald (in welk geval dezelfde set pagina's wordt geretourneerd maar met de volgende set eigenschappen), of omdat er meer pagina's van de generator zijn, of allebei. Vanaf versie 1.25 en verder geeft de API een element van batchcomplete terug om aan te geven dat alle gegevens voor de huidige "batch" van pagina's zijn teruggegeven en dat het element van continue geen gegevens bevat voor een volgende set eigenschappen, maar in plaats daarvan gegevens voor voortzetting voor de generator kan bevatten. Dit kan handig zijn om te voorkomen dat er een gecombineerde set resultaten voor duizenden pagina's wordt opgebouwd bij gebruik van een generator in combinatie met propmodules die mogelijk zelf moeten worden voortgezet.

Achterwaartse compatibiliteit van continue

MediaWiki-versie:
1.9

Van MediaWiki 1.21 tot 1.25, werd vereist om continue= (d.w.z. met een lege string als waarde) in het eerste verzoek te gebruiken om voortzetting gegevens te krijgen in het hierboven beschreven formaat. Als u dat niet doet, geven API-resultaten aan dat er aanvullende gegevens zijn door een element van query-continue te retourneren, uitgelegd op deze pagina . Voor 1.21, was die vervolgoptie de enige.

Als uw applicatie deze ruw vervolgoptie in MediaWiki 1.26 of later moet gebruiken, moet u rawcontinue= vermelden om deze te vragen.

Voorbeelden

Voorbeeld 1: Doorgaan met allcategories

In het volgende voorbeeld wordt de lijst allcategories gebruikt om resultaten op te vragen die de standaardwaarde limiet overschrijden, en dus moeten worden voortgezet om meer resultaten te retourneren. Merk op dat omdat de lijst allcategories wordt gebruikt, het tweede subdeel van continue accontinue wordt genoemd.
Resultaat
    "continue": {
        "accontinue": "List_of_19th_century_baseball_players",
        "continue": "-||"
    },
    "batchcomplete": "",
    "query": {
        "allcategories": [
            {
                "*": "List of"
            },
            {
                "*": "List of Palestinians"
            },
            {
                "*": "List of \"M\" series military vehicles"
            },
            {
                "*": "List of ''The Fast and the Furious'' characters"
            },
            {
                "*": "List of 100 Deeds for Eddie McDowd"
            },
            {
                "*": "List of 1919 Actors"
            },
            {
                "*": "List of 1972 births"
            },
            {
                "*": "List of 1999 ballet premieres"
            },
            {
                "*": "List of 19th-century Russian artists"
            },
            {
                "*": "List of 19th century Russian artists"
            }
        ]
    }
}


Voorbeeld 2: Doorgaan met categorymembers

In het volgende voorbeeld wordt de lijst categorymembers gebruikt om resultaten op te vragen die de limiet (cmlimit) overschrijden en dus moeten worden voortgezet om meer resultaten te retourneren. Merk op dat omdat de lijst categorymembers wordt gebruikt, het tweede subdeel van continue cmcontinue wordt genoemd.
Resultaat
{
    "batchcomplete": true,
    "continue": {
        "cmcontinue": "page|2a2a4c4e2a402a443e382a403a30011201dc11|21583092",
        "continue": "-||"
    },
    "query": {
        "categorymembers": [
            {
                "pageid": 3801230,
                "ns": 10,
                "title": "Template:User history"
            },
            {
                "pageid": 7769732,
                "ns": 10,
                "title": "Template:User history2"
            },
            {
                "pageid": 56312624,
                "ns": 10,
                "title": "Template:User history3"
            },
            {
                "pageid": 8364349,
                "ns": 2,
                "title": "User:-1348-"
            },
            {
                "pageid": 12553892,
                "ns": 2,
                "title": "User:(RT)"
            },
            {
                "pageid": 60272884,
                "ns": 2,
                "title": "User:MPSHeritage"
            },
            {
                "pageid": 42055428,
                "ns": 2,
                "title": "User:Tyssil"
            },
            {
                "pageid": 10356432,
                "ns": 2,
                "title": "User:1GoodNight4Life"
            },
            {
                "pageid": 59180278,
                "ns": 2,
                "title": "User:1I0I1I0I1I0"
            },
            {
                "pageid": 51651783,
                "ns": 2,
                "title": "User:01iproject09"
            },
            {
                "pageid": 29595961,
                "ns": 2,
                "title": "User:3family6"
            },
            {
                "pageid": 43181830,
                "ns": 2,
                "title": "User:3family6/Education and interests"
            },
            {
                "pageid": 17919048,
                "ns": 2,
                "title": "User:03md"
            },
            {
                "pageid": 44202586,
                "ns": 2,
                "title": "User:4Sage Wiki"
            },
            {
                "pageid": 64607473,
                "ns": 2,
                "title": "User:05Pier"
            },
            {
                "pageid": 46626298,
                "ns": 2,
                "title": "User:16pedia2"
            },
            {
                "pageid": 33371141,
                "ns": 2,
                "title": "User:17adavis7"
            },
            {
                "pageid": 15797963,
                "ns": 2,
                "title": "User:21stCenturyGreenstuff"
            },
            {
                "pageid": 61571792,
                "ns": 2,
                "title": "User:28regiment"
            },
            {
                "pageid": 17053340,
                "ns": 2,
                "title": "User:37ophiuchi"
            },
            {
                "pageid": 9781448,
                "ns": 2,
                "title": "User:88wolfmaster"
            },
            {
                "pageid": 17120424,
                "ns": 2,
                "title": "User:88wolfmaster/Userboxes"
            },
            {
                "pageid": 16369371,
                "ns": 2,
                "title": "User:123w456t"
            },
            {
                "pageid": 69413683,
                "ns": 2,
                "title": "User:296cherry"
            },
            {
                "pageid": 41449363,
                "ns": 2,
                "title": "User:636Buster"
            },
            {
                "pageid": 8451054,
                "ns": 2,
                "title": "User:1549bcp"
            },
            {
                "pageid": 26153484,
                "ns": 2,
                "title": "User:1951bfrj"
            },
            {
                "pageid": 28820985,
                "ns": 2,
                "title": "User:11614soup"
            },
            {
                "pageid": 69602489,
                "ns": 2,
                "title": "User:16272js"
            },
            {
                "pageid": 9578722,
                "ns": 2,
                "title": "User:A Geographer"
            },
            {
                "pageid": 36155511,
                "ns": 2,
                "title": "User:A knyght ther was"
            },
            {
                "pageid": 6637293,
                "ns": 2,
                "title": "User:A student of history"
            },
            {
                "pageid": 22308356,
                "ns": 2,
                "title": "User:A Werewolf"
            },
            {
                "pageid": 39893010,
                "ns": 2,
                "title": "User:A. Pseudonym"
            },
            {
                "pageid": 36267514,
                "ns": 2,
                "title": "User:A.Aboumrad"
            },
            {
                "pageid": 8475873,
                "ns": 2,
                "title": "User:A.Arc"
            },
            {
                "pageid": 5283037,
                "ns": 2,
                "title": "User:A.J.Chesswas"
            },
            {
                "pageid": 26516505,
                "ns": 2,
                "title": "User:A.kamburov"
            },
            {
                "pageid": 40306753,
                "ns": 2,
                "title": "User:A.sky245"
            },
            {
                "pageid": 6320018,
                "ns": 2,
                "title": "User:A.Zhubrovsky"
            },
            {
                "pageid": 68777172,
                "ns": 2,
                "title": "User:A2Bros"
            },
            {
                "pageid": 26764821,
                "ns": 2,
                "title": "User:A2soup"
            },
            {
                "pageid": 68203375,
                "ns": 2,
                "title": "User:A0231050705"
            },
            {
                "pageid": 26356724,
                "ns": 2,
                "title": "User:Aaa8841"
            },
            {
                "pageid": 61127272,
                "ns": 2,
                "title": "User:Aaghi"
            },
            {
                "pageid": 5410981,
                "ns": 2,
                "title": "User:Aak044"
            },
            {
                "pageid": 23936323,
                "ns": 2,
                "title": "User:Aardvarkzz"
            },
            {
                "pageid": 2934321,
                "ns": 2,
                "title": "User:Aaron of Mpls"
            },
            {
                "pageid": 40974272,
                "ns": 2,
                "title": "User:Aaron-Kocourek"
            },
            {
                "pageid": 13618776,
                "ns": 2,
                "title": "User:Aaroncorey"
            }
        ]
    }
}

Voorbeeld 3: Python-code voor het doorlopen van alle resultaten

Hier is Python-code die laat zien hoe u het resultaat van de zoekopdracht kunt itereren (met behulp van de python requests lib). Let op dat u geen manipulatie of afhankelijkheid moet hebben van de specifieke waarden die binnen het element continue worden teruggestuurd, omdat deze kunnen veranderen.

for result in query({'generator': 'allpages', 'prop': 'links'}):
    # process result data
...
def query(request):
    request['action'] = 'query'
    request['format'] = 'json'
    last_continue = {}
    while True:
        # Clone original request
        req = request.copy()
        # Modify it with the values returned in the 'continue' section of the last result.
        req.update(last_continue)
        # Call API
        result = requests.get('https://en.wikipedia.org/w/api.php', params=req).json()
        if 'error' in result:
            raise Exception(result['error'])
        if 'warnings' in result:
            print(result['warnings'])
        if 'query' in result:
            yield result['query']
        if 'continue' not in result:
            break
        last_continue = result['continue']