User:Zaycodes/Sandbox/API:Compare

GET request to get the difference between two pages.

Parameter history

 * v1.30: Introduced,  ,  ,
 * v1.20: Introduced ,

Additional notes
To get the difference between two pages, a revision number, a page title, or a page ID for both  and   must be passed.

Relative comparison at first and last revision
You can ask for a relative comparison to prev at the first revision of a page:

https://en.wikipedia.org/w/api.php?action=compare&fromrev=14189796&torelative=prev

This will result in the full text of the first revision being returned as the diff. Note that this is not accurate, since in some cases there may be default content for the page before its first revision. The fromrevid property will be absent from the results.

Similarly, you can ask for the next relative comparison on the last revision of a page:

https://en.wikipedia.org/w/api.php?action=compare&fromrev=874792394&torelative=next

(Note: this is the last revision as of the writing of this topic. Because the page is protected, it probably should not change.) The result is an empty diff, and the  will be absent. Unlike most revision comparisons, these results will change if a new revision is created.

This behavior in the API is historical. It isn't consistent with the conceptual model of page history as a series of revisions. There is no  revision to compare against the first revision, nor is there a   revision to compare against the last. Because of this, future versions of MediaWiki may give different results for this API call.

Using the HTML output
The  values  and  return HTML snippets.

The  HTML is a list of table rows ( elements) which should be embedded into a table with at least the following markup:

To display metadata as well, e. g. the user or comment, add extra rows and place the metadata inside a   element.

To make sure this diff displays correctly (e. g., that the diff marker and content columns aren’t the same width), you can add the   ResourceLoader module to your page:

If you want to display the , you will likewise want to add the <tvar|2> </> module, which includes some basic styles for comments and autocomments:

And if you want to display both the <tvar|1></> and the <tvar|2></> HTML on the page, you can combine these two tags into one: