2016-12-30 3 views
0

Я пытаюсь сделать несколько запросов Ajax в Википедию. Вызов Ajax находится в цикле (JavaScript), что является проблемой, потому что они возвращаются из строя. Чтобы обойти это, я подумал, что я бы включил идентификатор запроса в запрос Ajax, как вариант в своей песочнице. Проблема в том, что идентификатор не возвращается ...?Wikipedia api не возвращает идентификатор запроса

(Из Викимедиа 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

У меня возникли проблемы с поиском документации по параметру 'requestid' в документации API. У вас есть ссылка на страницу, которая описывает ее? – Barmar

+0

Извините, но у меня нет никакой документации, кроме того, что она говорит в песочнице (ссылка в вопросе), где говорится: «В ответе будет указано любое значение, указанное здесь. Может использоваться для различения запросов. ». Я просто не понимаю, почему его не следует включать в открытый поиск? Есть идеи? – user2267097

+0

В основном объясняется [здесь] (https://www.mediawiki.org/wiki/API:Main_module), где говорится: «requestid: любое значение, указанное здесь, будет включено в ответ. Может использоваться для различения запросов . 1.14+ " – user2267097

ответ

0

Я раньше не использовал API MediaWiki, но из того, что я только что сделал, 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, но в стандартном формате API действия MediaWiki.

Смежные вопросы