IGDB V3 请求

IGDB V3 Request

有谁知道如何使用 Internet 游戏数据库 API 从版本 3 开始正确搜索游戏?我正在尝试使用 IGDB 进行简单的游戏搜索。对于匹配搜索词的每个游戏,我想检索游戏的名称、类型、开发者和发行商、它的初始发布日期以及封面的 URL。通过一些谷歌搜索,我已经通过旧的 URL 参数让它工作,但是它们的末端似乎发生了一些变化,那些不再起作用。版本 3 文档说使用 Apicalypse 将您想要的字段发送回 Web 请求的正文中,但我终究无法弄清楚如何做到这一点。我正在使用 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 错误。因此,即使采用这种新格式,它仍然不喜欢我提供的字段。根据文档中的结构,我提供的字段实际上位于游戏端点中。所以我不知道出了什么问题。还有其他想法吗?

我决定再次尝试查询方法,不知何故它现在起作用了。这是我的控制器方法。不确定哪些调整使它再次工作,但确实如此。

[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;
}