API:修订版本

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Revisions and the translation is 66% complete.
Other languages:
English • ‎dansk • ‎español • ‎français • ‎русский • ‎中文 • ‎日本語
MediaWiki版本: 1.8

使用「GET請求」以获取页面的修订信息。

API文档


prop=revisions (rv)

(main | query | revisions)
  • This module requires read rights.
  • This module can be used as a generator.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Get revision information.

May be used in several ways:

  1. Get data about a set of pages (last revision), by setting titles or pageids.
  2. Get revisions for one given page, by using titles or pageids with start, end, or limit.
  3. Get data about a set of revisions by setting their IDs with revids.
Parameters:
rvprop

Which properties to get for each revision:

ids
The ID of the revision.
flags
Revision flags (minor).
timestamp
The timestamp of the revision.
user
User that made the revision.
userid
User ID of the revision creator.
size
Length (bytes) of the revision.
slotsize
Length (bytes) of each revision slot.
sha1
SHA-1 (base 16) of the revision.
slotsha1
SHA-1 (base 16) of each revision slot.
contentmodel
Content model ID of each revision slot.
comment
Comment by the user for the revision.
parsedcomment
Parsed comment by the user for the revision.
content
Content of each revision slot.
tags
Tags for the revision.
roles
List content slot roles that exist in the revision.
parsetree
Deprecated. Use action=expandtemplates or action=parse instead. The XML parse tree of revision content (requires content model wikitext).
Values (separate with | or alternative): ids, flags, timestamp, user, userid, size, slotsize, sha1, slotsha1, contentmodel, comment, parsedcomment, content, tags, roles, parsetree
Default: ids|timestamp|flags|comment|user
rvslots

Which revision slots to return data for, when slot-related properties are included in rvprops. If omitted, data from the main slot will be returned in a backwards-compatible format.

Values (separate with | or alternative): main
To specify all values, use *.
rvlimit

Limit how many revisions will be returned.

May only be used with a single page (mode #2).
No more than 500 (5,000 for bots) allowed.
Type: integer or max
rvexpandtemplates
Deprecated.

Use action=expandtemplates instead. Expand templates in revision content (requires rvprop=content).

Type: boolean (details)
rvgeneratexml
Deprecated.

Use action=expandtemplates or action=parse instead. Generate XML parse tree for revision content (requires rvprop=content).

Type: boolean (details)
rvparse
Deprecated.

Use action=parse instead. Parse revision content (requires rvprop=content). For performance reasons, if this option is used, rvlimit is enforced to 1.

Type: boolean (details)
rvsection

Only retrieve the content of this section number.

rvdiffto
Deprecated.

Use action=compare instead. Revision ID to diff each revision to. Use prev, next and cur for the previous, next and current revision respectively.

rvdifftotext
Deprecated.

Use action=compare instead. Text to diff each revision to. Only diffs a limited number of revisions. Overrides rvdiffto. If rvsection is set, only that section will be diffed against this text.

rvdifftotextpst
Deprecated.

Use action=compare instead. Perform a pre-save transform on the text before diffing it. Only valid when used with rvdifftotext.

Type: boolean (details)
rvcontentformat
Deprecated.

Serialization format used for rvdifftotext and expected for output of content.

One of the following values: application/json, text/css, text/plain, text/x-wiki, text/javascript
rvstartid

Start enumeration from this revision's timestamp. The revision must exist, but need not belong to this page.

May only be used with a single page (mode #2).
Type: integer
rvendid

Stop enumeration at this revision's timestamp. The revision must exist, but need not belong to this page.

May only be used with a single page (mode #2).
Type: integer
rvstart

From which revision timestamp to start enumeration.

May only be used with a single page (mode #2).
Type: timestamp (allowed formats)
rvend

Enumerate up to this timestamp.

May only be used with a single page (mode #2).
Type: timestamp (allowed formats)
rvdir

In which direction to enumerate:

newer
List oldest first. Note: rvstart has to be before rvend.
older
List newest first (default). Note: rvstart has to be later than rvend.
May only be used with a single page (mode #2).
One of the following values: newer, older
Default: older
rvuser

Only include revisions made by user.

May only be used with a single page (mode #2).
Type: user name
rvexcludeuser

Exclude revisions made by user.

May only be used with a single page (mode #2).
Type: user name
rvtag

Only list revisions tagged with this tag.

rvtoken
Deprecated.

Which tokens to obtain for each revision.

Values (separate with | or alternative): rollback
rvcontinue

When more results are available, use this to continue.

示例

範例1:從多個頁面取得版本資料

GET请求

上面的請求是用來取得頁面標題為API 首頁 的修訂版本資料

回應

示例代码

Python

#!/usr/bin/python3

"""
    get_pages_revisions.py

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages
    with titles [[API]] and [[Main Page]]

    MIT License
"""

import requests

S = requests.Session()

URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
    "action": "query",
    "prop": "revisions",
    "titles": "API|Main Page",
    "rvprop": "timestamp|user|comment|content",
    "rvslots": "main",
    "formatversion": "2",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS)
DATA = R.json()

PAGES = DATA["query"]["pages"]

for page in PAGES:
    print(page["revisions"])

PHP

<?php
/*
    get_pages_revisions.php

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]

    MIT License
*/

$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
    "action" => "query",
    "prop" => "revisions",
    "titles" => "API|Main Page",
    "rvprop" => "timestamp|user|comment|content",
    "rvslots" => "main",
    "formatversion" => "2",
    "format" => "json"
];

$url = $endPoint . "?" . http_build_query( $params );

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );

foreach( $result["query"]["pages"] as $k => $v ) {
    var_dump( $v["revisions"] );
}

JavaScript

/*
    get_pages_revisions.js

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]

    MIT License
*/

var url = "https://www.mediawiki.org/w/api.php";

var params = {
    action: "query",
    prop: "revisions",
    titles: "API|Main Page",
    rvprop: "timestamp|user|comment|content",
    rvslots: "main",
    formatversion: "2",
    format: "json"
};

url = url + "?origin=*";
Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});

fetch(url)
    .then(function(response){return response.json();})
    .then(function(response) {
        var pages = response.query.pages;
        for (var p in pages) {
            console.log(pages[p].revisions);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_pages_revisions.js

	MediaWiki API Demos
	Demo of `Revisions` module: Get revision data with content for pages with
	titles [[API]] and [[Main Page]]

	MIT License
*/

var params = {
		action: 'query',
		prop: 'revisions',
		titles: 'API|Main Page',
		rvprop: 'timestamp|user|comment|content',
		rvslots: 'main',
		formatversion: '2',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var pages = data.query.pages,
		p;
	for ( p in pages ) {
		console.log( pages[ p ].revisions );
	}
} );

範例2:取得頁面最後五個修訂版本並以日期和用戶篩選

GET请求

Request above is to obtain data for the last five revisions of the page API:Geosearch made after the 1st of July 2018, i.e. 2018-07-01 excluding changes made by the user SSethi (WMF)

回應

示例代码

Example 3: Get last revision of a page, following any redirects

GET请求

Request above is to obtain revision data of the page AntiSpoof , following any redirects. Since AntiSpoof redirects to 扩展:AntiSpoof , it will actually return revision data for 扩展:AntiSpoof .

回應

可能的错误

代码 信息
rvdiffto rvdiffto must be set to "prev", "next", "cur" or a non-negative number.
rvnosuchrevid There is no revision with ID ID
rvnosuchsection There is no section section in rID
rvrevids The revids= parameter may not be used with the list options (limit, startid, endid, dirNewer, start, end).
rvmultpages titles, pageids or a generator was used to supply multiple pages, but the limit, startid, endid, dirNewer, user, excludeuser, start and end parameters may only be used on a single page.
rvaccessdenied The current user is not allowed to read title
rvbadparams start and startid cannot be used together
rvbadparams end and endid cannot be used together
rvbadparams user and excludeuser cannot be used together
invalidparammix titlespageids或发生器用于提供多个页面,但rvlimitrvstartidrvendidrvdir=newerrvuserrvexcludeuserrvstartrvend参数只能在一个页面上使用。
accessdenied 您不被允许查看title
badid_startid 未找到参数startid的修订版本。
badid_endid 未找到参数endid的修订版本。

附加提醒

  • Pages are specified either by pageids or titles parameter. Individual revisions are specified by revids parameter. 參見API:查詢
  • Slots can be specified with the rvslots parameter. When the parameter is not present, the API will only return information about the main slot.
  • When using parameters marked as (enum), titles= must have only one title listed.
  • This module couldn't be used as a generator prior to version 1.25.
  • Diff functionality of this module was deprecated in version 1.30 and got moved to API:Compare .
  • The code for this query is located on the git repository at ApiQueryRevisions.php.

参数历史

  • v1.32: 啟用rvslots,roles 棄用rvcontentformat
  • v1.30: 棄用parsetree,rvprop,rvexpandtemplates,rvparse,rvdiffto,rvdifftotext,rvdifftotextpst
  • v1.27: 啟用rvdifftotextpst
  • v1.26: 啟用parsetree 棄用rvgeneratexml
  • v1.24: 棄用rvtoken
  • v1.21: 啟用contentmodel,rvcontentformat
  • v1.19: 啟用sha1,rvparse
  • v1.17: 啟用userid,rvparse
  • v1.16: 啟用parsedcomment,tags,rvdifftotext,rvtag
  • v1.15: 啟用rvdiffto,rvcontinue
  • v1.14: 啟用rvgeneratexml
  • v1.13: 啟用rvsection
  • v1.12: 啟用rvexpandtemplates,rvtoken
  • v1.11: 啟用ids,flags,size,rvuser,rvexcludeuser

参见