2016-12-30 134 views
0

我正在嘗試向維基百科發出幾個Ajax請求。 Ajax調用位於for-loop(JavaScript)中,這是一個問題,因爲它們不按順序返回。爲了解決這個問題,我想我會在Ajax請求中包含一個請求ID,就像他們的沙盒中的一個選項一樣。問題是ID不會返回...?Wikipedia api不返回請求ID

(來自維基的sandbox

https://en.wikipedia.org/wiki/Special%3aApiSandbox#action=opensearch&format=json&requestid=12&search=clownfish 

回報:

[ 
    "clownfish", 
    [ 
     "Clownfish", 
     "Clown" 
    ], 
    [ 
     "To the scientific name of an organism: This is a redirect from a vernacular (\"common\") name to the scientific name of an organism (or group of organisms).", 
     "Clowns are comic performers who employ slapstick or similar types of physical comedy, often in a mime style." 
    ], 
    [ 
     "https://en.wikipedia.org/wiki/Clownfish", 
     "https://en.wikipedia.org/wiki/Clown" 
    ] 
] 

沒有的requestId。但是,當我將操作從「opensearch」更改爲其他內容時,它確實會返回請求標識。

https://en.wikipedia.org/wiki/Special%3aApiSandbox#action=cspreport&format=json&requestid=12 

回報:

{ 
    "error": { 
     "code": "cspreport-wrongformat", 
     "info": "Error processing CSP report: wrongformat.", 
     "*": "See https://en.wikipedia.org/w/api.php for API usage." 
    }, 
    "requestid": "12", 
    "servedby": "mw1194" 
} 

正如你所看到的,這種反應不包括的requestId。

這是預期的行爲,還是我錯過了什麼?任何幫助,非常感謝:)

+0

我無法在API文檔中找到'requestid'參數的文檔。你有鏈接到描述它的頁面嗎? – Barmar

+0

對不起,我沒有任何文檔,除了它在沙箱中提到的內容(鏈接問題),它說:「此處給出的任何值都將包含在響應中,可用於區分請求。 」。我只是不明白爲什麼它不應該包含在開放式搜索中?有任何想法嗎? – user2267097

+0

非常基本上解釋了[這裏](https://www.mediawiki.org/wiki/API:Main_module),它說:「requestid:這裏給出的任何值都會包含在響應中,可以用來區分請求。1.14+「 – user2267097

回答

0

我從來沒有使用過MediaWiki API,但從我剛纔做的,opensearch不返回requestid。我做了https://en.wikipedia.org/w/api.php?requestid=10&action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=jsonfm它返回


{ 
    "batchcomplete": "", 
    "requestid": "10", 
    "query": { 
     "pages": { 
      "15580374": { 
       "pageid": 15580374, 
       "ns": 0, 
       "title": "Main Page", 
       "revisions": [ 
        { 
         "contentformat": "text/x-wiki", 
         "contentmodel": "wikitext", 
         "*": "\n{| id=\"mp-topbanner\" style=\"width:100%; background:#f9f9f9; margin:1.2em 0 6px 0; border:1px solid #ddd;\"\n| style=\"width:61%; color:#000;\" |\n\n{| style=\"width:280px; border:none; background:none;\"\n| style=\"width:280px; text-align:center; white-space:nowrap; color:#000;\" |\nWelcome to [[Wikipedia]],\nthe [[free content|free]] [[encyclopedia]] that [[Wikipedia:Introduction|anyone can edit]].\n[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles in [[English language|English]]\n|}\n\n| style=\"width:13%; font-size:95%;\" |\n* [[Portal:Arts|Arts]]\n* [[Portal:Biography|Biography]]\n* [[Portal:Geography|Geography]]\n| style=\"width:13%; font-size:95%;\" |\n* [[Portal:History|History]]\n* [[Portal:Mathematics|Mathematics]]\n* [[Portal:Science|Science]]\n| style=\"width:13%; font-size:95%;\" |\n* [[Portal:Society|Society]]\n* [[Portal:Technology|Technology]]\n* '''[[Portal:Contents/Portals|All portals]]'''\n|}\n\n{{#if:{{Main Page banner}}|\n\n{{Main Page banner}}\n\n\n}}\n\n{| id=\"mp-upper\" style=\"width: 100%; margin:4px 0 0 0; background:none; border-spacing: 0px;\"\n\n| class=\"MainPageBG\" style=\"width:55%; border:1px solid #cef2e0; background:#f5fffa; vertical-align:top; color:#000;\" |\n{| id=\"mp-left\" style=\"width:100%; vertical-align:top; background:#f5fffa;\"\n| style=\"padding:2px;\" | {{#ifexpr:{{formatnum:{{PAGESIZE:Wikipedia:Today's featured article/{{#time:F j, Y}}}}|R}}>150|From today's featured article|Featured article (Check back later for today's.)}}\n|-\n| style=\"color:#000;\" | {{#ifexpr:{{formatnum:{{PAGESIZE:Wikipedia:Today's featured article/{{#time:F j, Y}}}}|R}}>150|{{Wikipedia:Today's featured article/{{#time:F j, Y}}}}|{{Wikipedia:Today's featured article/{{#time:F j, Y|-1 day}}}}}}\n|-\n| style=\"padding:2px;\" | Did you know...\n|-\n| style=\"color:#000; padding:2px 5px 5px;\" | {{Did you know}}\n|}\n| style=\"border:1px solid transparent;\" |\n\n| class=\"MainPageBG\" style=\"width:45%; border:1px solid #cedff2; background:#f5faff; vertical-align:top;\"|\n{| id=\"mp-right\" style=\"width:100%; vertical-align:top; background:#f5faff;\"\n| style=\"padding:2px;\" | In the news\n|-\n| style=\"color:#000; padding:2px 5px;\" | {{In the news}}\n|-\n| style=\"padding:2px;\" | On this day...\n|-\n| style=\"color:#000; padding:2px 5px 5px;\" | {{Wikipedia:Selected anniversaries/{{#time:F j}}}}\n|}\n|}\n{{#switch:{{CURRENTDAYNAME}}|Monday|Friday=\n\n\n\n\n\nFrom today's featured list\n\n{{#ifexist:Wikipedia:Today's featured list/{{#time:F j, Y}}|{{Wikipedia:Today's featured list/{{#time:F j, Y}}}}|{{TFLempty}}}}\n\n\n\n\n|}}\n\n{| id=\"mp-lower\" style=\"margin:4px 0 0 0; width:100%; background:none; border-spacing: 0px;\"\n| class=\"MainPageBG\" style=\"width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;\" |\n{| id=\"mp-bottom\" style=\"width:100%; vertical-align:top; background:#faf5ff; color:#000;\"\n| style=\"padding:2px;\" | {{#ifexist:Template:POTD protected/{{#time:Y-m-d}}|Today's featured picture | Featured picture (Check back later for today's.)}}\n|-\n| style=\"color:#000; padding:2px;\" | {{#ifexist:Template:POTD protected/{{#time:Y-m-d}}|{{POTD protected/{{#time:Y-m-d}}}}|{{POTD protected/{{#time:Y-m-d|-1 day}}}}}}\n|}\n|}\n\n\n== Other areas of Wikipedia ==\n{{Other areas of Wikipedia}}\n\n== Wikipedia's sister projects ==\n{{Wikipedia's sister projects}}\n\n== Wikipedia languages ==\n{{Wikipedia languages}}\n\n\n{{Main Page interwikis}}{{noexternallanglinks}}{{#if:{{Wikipedia:Main_Page/Tomorrow}}||}}__NOTOC____NOEDITSECTION__" 
        } 
       ] 
      } 
     } 
    } 
} 

正如你所看到的那樣,它有一個requestid。我認爲MediaWiki不支持在所有操作中使用requestid。

從我試驗過的,這是預期的行爲。

+0

這個答案只是重申它在問題中所說的內容。 – Barmar

1

OpenSearch Suggestions extension規範不允許額外的返回值,例如requestid。這也是爲什麼opensearch模塊有一個參數可以將警告視爲錯誤,因爲它不能返回警告。

嘗試使用action=query&list=prefixsearch代替。這給出了與action = opensearch相同的結果,但採用了MediaWiki action API的標準格式。