WG APIã¯ãAPIã®éåžžã«è©³çŽ°ãªèª¬æãæäŸããŸãããAPIã«ã¢ã¯ã»ã¹ããããã®ã©ã€ãã©ãªã¯æäŸããŸããã æ®å¿µãªãããAPIã¯ã¢ãã«ãšã¡ãœãããèªåçã«çæã§ããæšæºã䜿çšããŠããŸããã ããã«ãJSONå¿çã¯ãå¿çã®æ§é ãåå ã§ã¢ãã«ã®çæã«å€±æããŸããã ãã®çµæãã¢ãã«ïŒç¹ã«ã¡ãœããïŒãæåã§èšè¿°ããæ¹ãç°¡åã§ããããšãå€æããŸãããããã®ã¬ãã¹ã³ã¯éåžžã«æ¥åžžçã§éå±ãªãã®ã§ããããšãå€æããŸããã ãã®èšäºã§ã¯ãHTMLèšè¿°ããã¢ãã«ãšã¯ãšãªã¡ãœãããèªååããããšãããã³åŸãããå©ç¹ãšæ¬ ç¹ãæ€èšããŸãã
éçº
å¿
èŠæ§ããªããããWG APIãšã®æŠãã«ã¯ã¢ããªã±ãŒã·ã§ã³ããããŸããããåæã«ããã®APIãããŒã¿ãžã®ã·ã³ãã«ã§ãªãŒãã³ãªã¢ã¯ã»ã¹ã®ããã®ããŸããŸãªãã¢ã®äŸãšããŠäœ¿çšããããšæããŸãã æ®å¿µãªããã.NETã§WG APIã®äœæ¥ã©ã€ãã©ãªãèŠã€ãããªãã£ããããCïŒã§ã¯ã©ã€ã¢ã³ããçæãããŠãŒãã£ãªãã£ãäœæããŸãããããã¯ã
WG APIãµã€ãããããã¥ã¡ã³ããèªã¿åããæ¢è£œã®ãªã¯ãšã¹ãããã³ã¬ã¹ãã³ã¹ã¢ãã«ã«åŠçããŸãã
æ®å¿µãªãããWG APIã®ããã¥ã¡ã³ãã¯å®å
šã§ã¯ãªããããæç¹ã§ãJSONã䜿çšããŠæ¢ã«åä¿¡ããåçããã®ã¿è¿ãããåçãç解ããããšãã§ããŸãã
ãã®åŸã
thunderspb habrozhitelã¯ããŒã¿ã¹ããŒããååŸããããã®ã¯ããã«ç°¡åãªæ¹æ³ãææ¡ããŸããããã®ãããèšäºã®å
¬éã延æããŸããïŒæéã®å€§å¹
ãªäžè¶³ã«ããã»ãŒ2ãæïŒã æ®å¿µãªããããã®ããŒã¿ã¹ããŒã ã«ããŸã£ããåãæ¬ ç¹ããããŸããè€åããŒã¿åã®å¿ç圢åŒãç解ããæ¹æ³ã¯ãããŸããã å°æ¥ããã®ããŒã¿ã¹ããŒã ã§åäœããããã«ãŠãŒãã£ãªãã£ãããçŽãäºå®ã§ãããçŸæç¹ã§ã¯WG APIã§ã®åäœã¯åªå
äºé
ã§ã¯ãªããããçŸåšå®è£
ãããŠãããã®ãã¬ã€ã¢ãŠãããããšã«ããŸããã
å®è£
ïŒ
WGãåºå£ã§èŠæ±ãäžãããã®ã®æ§é ãå®å
šã«ææžåããŠããªããšããäºå®ã®ãããèŠæ±ãšå¿çã®åœ¢åŒãå®éã«ã¯å°ãäžäŸ¿ã«ããå¿
èŠããããŸããã åºåã§ã¯ã1ã€ã®çããšåããããç°¡åã«ååŸã§ããŸãããŸããé
åãŸãã¯èŸæžãååŸããããšãã§ããŸãã äžèšã®ããã«ããªã¯ãšã¹ããéä¿¡ããJSONã®åœ¢åŒã§å¿çãåä¿¡ããã ãã§å¯èœãªããšãèŠã€ããããšãã§ããŸããããã§ãã©ã€ãããŒã¿ã§ããŒã¿ãã©ã®ããã«è¿ããããã確èªããŸãïŒããã¥ã¡ã³ãã«åã¡ãœããã®Explorer APIãžã®ãªã³ã¯ããããšäŸ¿å©ã§ãããªã¯ãšã¹ããäœæããŠããã©ãŠã¶ã§çŽæ¥åçã確èªããã®ã¯éåžžã«ç°¡åã§ãïŒã
æçµçã«ãéåžžã«ã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ãã§ããŸããããã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãWG APIãéããŠããããŒãžãéããã解æãããŸãã ãã®åŸãCïŒã¯ã©ã€ã¢ã³ãã³ãŒããçæãããå¥ã®ãŠã£ã³ããŠã«è¡šç€ºãããŸãã
ãããããœãŒã¹ã³ãŒããããŠã³ããŒãã§ããŸãã ãããžã§ã¯ããããŠã³ããŒãããŠå®è¡ããå¿
èŠããªãå ŽåããŸãã¯å®è¡ããæ©äŒããªã
å Žåã¯ãããã«çæãããã¯ã©ã€ã¢ã³ãã³ãŒãã®
äŸãããŠã³ããŒãããããšã
ã§ããŸã ã
䜿çšäŸïŒ
以äžã®äŸã®ãœãŒã¹ã³ãŒãã¯ã ããããå
¥æã§ããŸã ãPCLãšäºææ§ã®ããã³ãŒããå
¥æããã®ã§ããã®ã³ãŒããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšWebãµãŒããŒã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã«äœ¿çšã§ããŸãã
ããšãã°ã15åãè²»ããããã¶ã€ã³ãªãã®ãã¹ãXamarin Formsã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããæåã®ãã©ãŒã ã§ã¯ããã¯ããŒã ã«ããæ€çŽ¢ãã2çªç®ã®ãã©ãŒã ã§ã¯èŠã€ãã£ãããã¯ããŒã ã®ãã¡éžæãããããã¯ããŒã ã«é¢ããæ
å ±ãã¹ã±ããããŸããã
äœæãããããžã§ã¯ãã«csãã¡ã€ã«ãè¿œå ãããŠãŒãã£ãªãã£ã§çæããã
ã³ãŒããã³ããŒããŸããã
次ã®ã¹ãããã¯ãJson.netã©ã€ãã©ãªãè¿œå ããããšã§ãïŒnugetããNewtonsoft.Jsonã©ã€ãã©ãªãŸãã¯Install-Package Newtonsoft.Jsonã³ãã³ããæ€çŽ¢ããŸãïŒã
æ€çŽ¢ã³ãŒãã¯éåžžã«ç°¡åã§ãã
var client = new WGClient.Client(); var accounts = await client.SendRequestArray<ResponseWgnAccountList>(new RequestWotAccountList() { ApplicationId = "demo", Search = SearchNickname }); GamerAccounts = accounts;
åæã«ãçæããã説æã®ãããã§ãã³ãŒããå
¥åãããšãã«ã¹ã¿ãžãªã§çŽæ¥ããã³ãããåãåãããšãã§ããŸãã
ApplicationIdïŒâ demoâã¯APIã®ãã¹ãã«ã®ã¿äœ¿çšã§ããããšã«æ³šæããŠãã ããã ãªãªãŒã¹ããã«ã¯ã
ã¢ã«ãŠã³ãã« ApplicationIdãäœæããå¿
èŠããã
ãŸãèŠã€ãã£ãããã¯ããŒã ã®ãªã¹ãã衚瀺ããããã«æ®ããŸãïŒ
æ®å¿µãªããšã«ãAmiev SheriyevïŒç§ã®å
åŒïŒã®ãããã§ãäŸã®ããŒã¹ãåŒãè£ãããã«æäŸãããã²ãŒã ã®ããã¯ããŒã ã«æè¬ããŠããŸããèŠã€ãã£ããªã¹ãããã¿ããããŠã2çªç®ã®ãã©ãŒã ãéããéžæããAccountIdãæž¡ããŸãã
var item = e.SelectedItem as ResponseWgnAccountList; Navigation.PushAsync(new DetailsPageView(item.AccountId));
2çªç®ã®ããŒãžã§ã¯ããã詳现ãªæ
å ±ãååŸããããã®å¥ã®ã¡ãœããã®ãªã¯ãšã¹ããäœæãããŸãã
var client=new Client(); var response=await client.SendRequestDictionary<ResponseWotAccountInfo>(new RequestWotAccountInfo() { ApplicationId = "demo", AccountId = accountId });
ãããã£ãŠãçæãããã¯ã©ã€ã¢ã³ãã®å©ããåããŠããªã¯ãšã¹ããšWG APIãžã®å¿çãçæããã«ãŒãã³ã®èªååã«ãããæéã倧å¹
ã«ç¯çŽããã¢ããªã±ãŒã·ã§ã³èªäœã«æéãåŽåã泚æãéäžããããšãã§ããŸãã
çæïŒ
æåãã¡ã€ã«ã«ããã®å¿
èŠæ§
ãããããããæãåºæ¬çãªæ¬ ç¹ã§ã-å
šäœãšããŠã®åçå
šäœã«é¢ããŠã¯ããµãã¿ã€ãã«ã€ããŠã¯ãããŒã¿ãè¿ãããæ¹æ³ã«é¢ããæ
å ±ããããŸããïŒåçŽãªåçãé
åããŸãã¯èŸæžïŒã ãããã£ãŠãå€ãã®å Žæã§ç·šéãè¡ãå¿
èŠããããŸãã
ããšãã°ããã¯ããã¯ã¡ãœããïŒ
çŸç§äºå
ž/ä¹ãç© ïŒãåãäžããŸãã
å¿çéãæžããããã«ã1ã€ã®ã¬ãã«ãš1ã€ã®åœã®ææ³ã䜿çšããŠå¿çããã£ã«ã¿ãªã³ã°ããŸãã 次ã®ã³ãŒããåŒã³åºããšããšã©ãŒãã¹ããŒãããŸãã
var client = new WGClient.Client(); var response = await client.SendRequestDictionary<ResponseWotEncyclopediaVehicles>(new RequestWotEncyclopediaVehicles() { ApplicationId = "demo", Tier = "8", Nation = "ussr" });
äŸå€ãæããïŒ
æªåŠçã®äŸå€ïŒNewtonsoft.Json.JsonSerializationExceptionïŒçŸåšã®JSONé
åïŒããšãã°[1,2,3]ïŒãJSONãªããžã§ã¯ãïŒããšãã°{"name"ïŒ "value »}ïŒæ£ããéã·ãªã¢ã«åããã
ãã®ãšã©ãŒãä¿®æ£ããã«ã¯ãJSONãJSONãªããžã§ã¯ãïŒäŸïŒ{"name"ïŒ "value"}ïŒã«å€æŽããããéã·ãªã¢ã«åãããåãé
åãŸãã¯Listã®ãããªã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ïŒICollectionãIListïŒãå®è£
ããåã«å€æŽããŸãJSONé
åãããã·ãªã¢ã©ã€ãºãããŸãã JsonArrayAttributeãã¿ã€ãã«è¿œå ããŠãJSONé
åãããã·ãªã¢ã©ã€ãºã匷å¶ããããšãã§ããŸãã
ãããã£ãŠãCrewãµãã¿ã€ãããã·ãªã¢ã©ã€ãºããããšã¯ã§ããªãã£ãããã
API Explorerã§ãªã¯ãšã¹ãããã«ããããšãCrewãé
åãšããŠè¿ãããããšãããããŸãã
åæã«ãæ
å ±ãååšããªãã¯ã«ãŒãµãã¿ã€ããšã¯å¯Ÿç
§çã«ããã£ãŒã«ãã¿ã€ããæŽæ°ã®ãªã¹ãããæå®ãããŠãããšããäºå®ã«ããããšã³ãžã³ãã£ãŒã«ããæ£ããèªèãããŸããã
Crewãã£ãŒã«ããé
åã«ããŠããã£ãŒã«ãã眮ãæããããšã§ãšã©ãŒãä¿®æ£ã§ããŸãã
///<summary> /// ///</summary> [JsonProperty("crew")] public WotEncyclopediaVehiclesCrew Crew { get; set; }
é
åããšïŒ
public WotEncyclopediaVehiclesCrew[] Crew { get; set; }
default_profile.ammoã«ã€ããŠãåæ§ã®ãšã©ãŒãããããçºçããŸãããé
åãäœæããŠä¿®æ£ããå¿
èŠããããŸãã
æ®å¿µãªãããã»ãšãã©ãã¹ãŠã®æ¹æ³ã§ãã®ãããªå€æŽãè¡ãå¿
èŠããããŸãããããã§ãããããã®å€æŽããã£ãŠããäœæ¥éã¯å€§å¹
ã«æ¹åãããŸãã
HTMLäŸåé¢ä¿
WG APIã¯JSONèšè¿°æšæºã䜿çšããªããããHTMLèšè¿°ã®è§£æã«æºè¶³ããå¿
èŠããããŸãã ãŸããHTMLã¯ä»»æã«å€æŽã§ããåãã¿ã€ãã®èšè¿°ã¯ç°ãªãå Žåãããããã·ã¢èªã§ãèŠã€ããããšãã§ããŸãã 䜿çšãããã¿ã€ãã®æ°ããååãææ¥è¡šç€ºãããªããšããä¿èšŒã¯ãããŸããã
次ã®ããŒãžã§ã³ã§ã¯ãJSONã®HTMLèšè¿°ã®ä»£ããã«è§£æããŸããããã®åé¡ã®åœ±é¿ã¯ãããã«æžå°ããŸãã
ãã©ãŠã¶
çŸåšã®ãœãªã¥ãŒã·ã§ã³ã¯CefSharpã«åºã¥ããŠããŸããããã¯ããã§ã«ãœãªã¥ãŒã·ã§ã³ãWin32ãã©ãããã©ãŒã ã§ã®ã¿æ©èœããããšãæå³ããŸãã CefSharpã©ã€ãã©ãªã䜿çšããŠæžãæããŠãã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ãååŸã§ããŸãã ç¹°ãè¿ããŸãããJSON解æã«åãæ¿ãããšãCefSharpã®äŸåé¢ä¿ããªããªããWindowsãMacãããã³Webã§åäœãããœãªã¥ãŒã·ã§ã³ãäœæãããŸãã
æªãã€ã³ã¿ãŒããã
ããŒãµãŒã¯ãã€ã³ã¿ãŒãããããã®åŸã®ãã¹ãŠã®çµæãšãšãã«æ¶æ»
ããå¯èœæ§ãããããšãèæ
®ããŠããŸããã
æé©ã§ãªãã¯ã©ã€ã¢ã³ãAPI
çµå±ãç§ã¯ããªãåé·ã§ããŸã䟿å©ã§ã¯ãªãéãããŒãžã§ã³ã«æ±ºããŸããã
SendRequest<TResponse>(TRequest request)
ãœãªã¥ãŒã·ã§ã³ãç°¡åã«ããæ¹æ³ã¯ãããããããŸãã ãã ããWGãç¬èªã®APIã®èª¬æãå®äºããã®ãé¢åã§ã¯ãªãå Žåã¯ãAPIã®æãç°¡åãªããŒãžã§ã³ãååŸã§ããŸãïŒã€ãŸããå¿çãšããŠã®èŠæ±ããæ£ç¢ºã«äœãæåŸ
ã§ãããããèŸæžãé
åããŸãã¯å¿çã®ã«ãŒãããã³åããŒãã®åäžãªããžã§ã¯ããäœããã®åœ¢ã§èŠå¶ããããïŒã
NugetãŸãã¯Json.NETã©ã€ãã©ãªãæåã§è¿œå ããå¿
èŠæ§
æ®å¿µãªãããçŸæç¹ã§ã¯ãã¢ã»ã³ããªãŸãã¯ãã²ããããã±ãŒãžã®åœ¢ã§ãœãªã¥ãŒã·ã§ã³ãçæããæ¹æ³ã¯ãããŸãããããã¯ãäžèšã®åé¡ïŒèŠæ±ã«å¯Ÿããå¿çã®èšè¿°ã®æ¬ åŠïŒã®ããã«å®å
šã«æ©èœããã³ãŒããããã«ååŸããæ¹æ³ããªãããã§ãã
Nugetããã±ãŒãžã䜿çšãããœãªã¥ãŒã·ã§ã³ã§ã¯ããœãŒã¹ã³ãŒããã³ããŒããŠJson.NETãæåã§æ¥ç¶ããå¿
èŠããªããªãå¯èœæ§ããããŸãããäžèšã®ããã«ãæå®ã®å Žæã«ãã¡ã€ã«ããå¿
èŠããããŸãã
ãã¹ãã«ãã¬ããž
APIã®æ°ããããŒãžã§ã³ã¯æã«1ã2åãªãªãŒã¹ãããŸãã ãããã£ãŠãåçå
šäœãåçæãããšããã§ã«è¡ã£ããã¡ã€ã«ã§ã®ãã¹ãŠã®ç·šéå
容ãèªåçã«å€±ãããŸãã
æ°ããããŒãžã§ã³ã§ãã¹ãŠããã¡ã€ã«ã§æ£ããå€æŽãããããšã確èªããããã«ãååŸãããœãªã¥ãŒã·ã§ã³ããã¹ãã§ã«ããŒããŠããã¡ã€ã«ã§äœããå¿ããã«å¿ããªãããã«ããããšãã§ããŸãã æŠããŠããã¹ãã¯èªåçã«çæãããŸãã çè«çã«ã¯ãããã«ãããæ°ããããŒãžã§ã³ããã¹ãŠãå®å
šã«ç Žå£ããããã§ã¯ãªãããšãéšåçã«æ€èšŒãããŸãã
ã³ãŒãå質
åè¿°ã®ããã«ãã³ãŒãã¯ãœãªã¥ãŒã·ã§ã³ã®ãããã¿ã€ããšããŠäœæããããã®ã§ãããå®éã®ããŒãžã§ã³ã«ã¹ããŒããŠæžãæããã®ã¯æ®å¿µãªããšã§ã¯ãããŸããã ãœãªã¥ãŒã·ã§ã³å
šäœïŒåèš15åã§èšè¿°ãããäŸãå«ãïŒã«ãåèš2æ©ãè²»ããããŸããã
ã¯ã©ã€ã¢ã³ããçæãããããžã§ã¯ããéžæãã
çŸåšããã¹ãŠã®ãããžã§ã¯ãã«å¯ŸããŠ4äžè¡ä»¥äžãäžåºŠã«çæãããŠããŸãã ã¯ã©ã€ã¢ã³ããçæããå¿
èŠããããããžã§ã¯ããšãã®ãããžã§ã¯ãã®ã¡ãœããã®éžæãè¿œå ã§ããŸãã
çŸæç¹ã§ã¯ããã¹ãŠã®ãããžã§ã¯ãã¯åå空éã§åºåãããŠããããããããžã§ã¯ããåé€ããã ãã§æçµçãªã¢ã»ã³ããªãµã€ãºãçž®å°ã§ããŸãã
äœåãªãã£ãŒã«ãã«ã€ããŠãåãããšãèšããŸãã
ç¡éã«æ¹åã§ããŸãããããã¯èŠçŽã§ããŸãã
ãŸãšã
Wargamingãéçºè
ã«éãããAPIãéãã ãã§ãªãããã£ãŒã«ãã®å€ã詳现ã«èª¬æããããšããŠãããšããäºå®ã¯éåžžã«ç§°è³ã«å€ããŸãã 説æãšåçèªäœã®æ§é ã«ã¯é倧ãªæ¬ ç¹ããããŸãïŒã€ãŸããè¿ãããå
容ãåäžã®åçãé
åããŸãã¯è€éãªåã®èŸæžãç解ããããšã¯äžå¯èœã§ãïŒããããã¯ãã®ãããªãµãŒãã¹ã«æé©ãªAPIããã¥ã¡ã³ãã®1ã€ã§ãã
ãã®èšäºã§èŠãããã«ãWGã¯å°ãªããšãããã€ãã®äž»èŠãªããã°ã©ãã³ã°èšèªçšã®ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãç°¡åã«çæã§ããæ¢æã®ã©ã€ãã©ãªãæ¥ç¶ããã ãã§éçºè
ã®èšå€§ãªæéãšåŽåãç¯çŽã§ããŸãã WGããåæ§ã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ããããšãæåŸ
ããŸãããã