从 Youtube API 获取播放列表的状态



我正在构建一个基于用户选择的应用程序,该应用程序连接到youtube api并获取某些播放列表的视频列表。 我想让它安全使用,如果状态不是 200,则无法显示下一个屏幕。 我的请求的 JSON 结果不会返回除隐私状态之外的任何状态信息(同样,如果我获得视频而不是播放列表的数据,我会获得详细信息):

var urlString = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=500&playlistId=(playlistId)&key=XXXXX"
"status":{  
"privacyStatus":"public"
}

如何验证播放列表请求是否有效? 谢谢!

我还没有找到测试YT api状态的可靠方法,所以我通常会从应该存在的调用中寻找结果。如果它们不存在(即空或"0"),那么它通常是一个失败的调用。

所以[总结果]和/或[标题]作为例子。

这里有两部分。

  1. 您需要确定实际的 HTTP 请求是否成功(即请求 https://googleapis/youtube/v3/[方法]?参数])

  2. 您有一个特定的要求,您需要处理没有数据的情况。来自 API 本身的响应不会显式提供此信息,而是需要定义失败的含义

考虑到这一点,您可以实施两个级别的检查:

检查 1 - HTTP 状态代码

第一级将检查HTTP状态代码(200=OK400=Bad Request等)。

如果您的 API 请求返回的状态为200,则可以转到下一级检查(请参阅检查 2)。但是,如果您的 API 请求返回状态400,则请求失败,不需要(或不需要)进一步检查。

注意:如果您确实获得了400状态,则响应中有一些 JSON,其中包含有关错误的详细信息。

{
"error": {
"errors": [
{
"domain": "youtube.parameter",
"reason": "missingRequiredParameter",
"message": "No filter selected. Expected one of: id, playlistId",
"locationType": "parameter",
"location": ""
}
],
"code": 400,
"message": "No filter selected. Expected one of: id, playlistId"
}
}

检查 2 - 数据

第二级将检查是否返回了任何结果(因为似乎可能具有 HTTP 状态代码200而没有结果)。

这与实际 HTTP 请求本身的状态无关。相反,您必须检查响应以查看应用程序所需的数据是否存在。

在下面的200响应示例中,items数组为空。因此,您可以说,即使请求成功,这也是失败条件,并且不会显示下一个屏幕。

{
"kind": "youtube#playlistItemListResponse",
"etag": ""[etag would appear here]"",
"nextPageToken": "CAAQAA",
"pageInfo": {
"totalResults": 199,
"resultsPerPage": 0
},
"items": [
]
}

注意:以上是特意将每页结果设置为 0 的示例。

相关内容

  • 没有找到相关文章

最新更新