IGDB V3 Запрос - PullRequest
       8

IGDB V3 Запрос

0 голосов
/ 08 января 2019

Кто-нибудь знает, как правильно искать игры, используя API базы данных Internet Game начиная с версии 3? Я пытаюсь использовать IGDB для простого поиска игры. Для каждой игры, которая соответствует условиям поиска, я хотел бы получить название игры, жанры, разработчиков и издателей, дату ее первоначального выпуска и URL обложки. Благодаря некоторому поиску в Google, я работал через старые параметры URL, но что-то изменилось, и они больше не работают. Документация версии 3 говорит об использовании Apicalypse для отправки нужных полей в теле веб-запроса, но я никак не могу понять, как это сделать. Я использую AJAX для отправки поисковых запросов на контроллер и отправляю результаты обратно через объект JSON. Я получаю ошибку 400 Bad Request каждый раз, независимо от того, какой синтаксис я использую для полей. В документации сказано, что использование параметров URL все еще должно работать, но это не так. Вот мой код контроллера.

[HttpPost]
    [WebMethod]
    public JsonResult LookUpGames(string search)
    {
        string url = "https://api-v3.igdb.com/games/?search=" + search
            + "&fields=name,genres,involved_companies,first_release_date,cover";
        HttpWebRequest gameRequest = (HttpWebRequest)WebRequest.Create(url);
        gameRequest.Accept = "application/json";
        gameRequest.Headers.Add("user-key", "[MYUSERKEY]");
        WebResponse gameResponse = (HttpWebResponse)gameRequest.GetResponse();
        string responseString = new StreamReader(gameResponse.GetResponseStream()).ReadToEnd();
        return Json(new { result = responseString });
    }

ОБНОВЛЕНИЕ: Спасибо за указатель, Джейк. Я сейчас бью по серверам со следующим кодом.

HttpResponse<JsonResult> jsonResponse = Unirest.post("https://api-v3.igdb.com/games")
                .header("user-key", "[MYUSERKEY]")
                .header("Accept", "application/json")
                .body("fields name,genres,platforms,involved_companies,cover").asJson<JsonResult>();
JsonResult jsonResult = Json(new { result = jsonResponse });
            return jsonResult;

Очевидно, что в C # нет JsonNode, поэтому я попробовал JsonResult, и .asJson (), по-видимому, .asJson (). Я просто возился с этим, пока он не сработал. Но я все еще не вернусь к списку. Я получаю ошибку 400 Bad Request. Так что даже в этом новом формате все равно не нравятся поля, которые я ему даю. Согласно структуре в документации, поля, которые я ей предоставляю, фактически находятся в конечной точке игры. Так что я не знаю, что может быть не так. Любые другие идеи кто-нибудь?

1 Ответ

0 голосов
/ 15 января 2019

Я решил снова попробовать подход, и теперь он работает. Вот мой метод контроллера, который работает. Не уверен, какие настройки заставили его работать снова, но он работает.

[HttpPost]
[WebMethod]
public JsonResult LookUpGames(string search)
{
    string url = "https://api-v3.igdb.com/games?search=" + search + 
        "&fields=name,genres.name,platforms.name,involved_companies.*, involved_companies.company.*,first_release_date,cover.url";
    HttpWebRequest gameRequest = (HttpWebRequest)WebRequest.Create(url);
    gameRequest.Accept = "application/json";
    gameRequest.Headers.Add("user-key", "[MYUSERKEY]");
    WebResponse gameResponse = gameRequest.GetResponse();
    StreamReader sr = new StreamReader(gameResponse.GetResponseStream());
    string responseString = sr.ReadToEnd();
    sr.Close();
    JsonResult jsonResult = Json(new { result = responseString });
    return jsonResult;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...