从 Chrome 扩展程序中的 API 中提取数据的任何方法
Any way to pull data from an API in a Chrome extension
我正在尝试创建一个Chrome扩展程序,从Metacritic中提取和操作数据。我在网上找到了这个非常棒的 API,它可以让我为我需要的数据发送 GET 请求并以 JSON 形式返回它。但是,看起来我不能直接在 JS 中做到这一点。
有没有办法在扩展中运行 API 请求?我将 URL 保存为 JS 文件中的变量并对其进行格式化,以便只需将其插入请求中即可......如果我能弄清楚它将如何工作。
编辑:经过思考,也许解决它的一种方法是从扩展中的 Javascript 文件以可用语言(如 Ruby(之一运行脚本......这可能吗?
您可能无法从 javascript 访问 API 的主要原因是同源安全限制。
Chrome 扩展程序可以请求访问给定域的权限并绕过这些限制,有关这方面的文档,请访问:https://developer.chrome.com/extensions/xhr#requesting-permission
将以下内容添加到扩展清单文件应该可以解决问题:
"permissions": [
"https://byroredux-metacritic.p.mashape.com/"
],
完成此操作后,您应该能够使用任何普通的XHR客户端从扩展javascript访问API(请注意任何安全问题(。XHR最常见的API可能是jQuery方法$.ajax
。
例如:
$.ajax({
url: "https://byroredux-metacritic.p.mashape.com/find/game",
method: "POST",
headers: {
"X-Mashape-Key": API_KEY
},
data: {
platform: 1,
retry: 4,
title: "The Elder Scrolls V: Skyrim"
},
dataType: "json",
success: function(data) { console.log(data) }
})
(注意:这些代码都没有经过测试(。
我还没有开发Chrome扩展程序,但据我所知,您可以在其中包含您喜欢的任何JS。
我建议使用库,例如:https://github.com/swagger-api/swagger-js
将其保存在扩展中并将其添加为依赖项
"content_scripts": [
{
"matches": ["..."],
"js": ["swagger.js"]
}
然后让它运行(也值得看看 GitHub 上的文档(:
window.swagger = new SwaggerApi({
url: "https://byroredux-metacritic.p.mashape.com/find/game",
success: function() {
if(swagger.ready === true) {
// Upon connection, retrieve something
swagger.apis.title.getGameByTitle({title:'The Elder Scrolls V: Skyrim'}, function(data) {
var game = data.content.data;
});
}
}
});
它也有一些东西可以指定标头,我认为该特定 API 也需要这些标头。
我建议使用"香草"JS库,因为为此包含jQuery可能会矫枉过正并妨碍性能。
我不是 chrome 扩展程序开发人员,但这可能会有所帮助https://developer.chrome.com/extensions/xhr
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何访问高图表工具提示中的任何特定数据
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- php函数的XMLHttpRequest响应不包含任何数据
- Node JS,传统的数据结构?(如Set等),任何类似Java.util的node
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 识别值是否与 jqGrid 数据中的任何键匹配的正确方法是什么?
- select2 使用 AJAX 加载数据不能选择任何选项
- 是从画布获取图像数据的任何方法,从远程视频中提取
- 为什么为我的数据表设置类没有任何作用
- Javascript-Ajax 无法发送任何数据
- 为什么复选框在未选中时不提交任何数据
- 如果发现任何数据,如何停止每7秒运行一次的函数
- onClick()函数没有'不要发布任何数据
- .scrollInto查看带有数据标记的任何元素,或使用类对带有数据标签的内容进行分段
- ajax调用成功,但未返回任何数据
- 如果当前文本数据=任何其他文本数据,则.
- Win Pivot应用程序.需要从一个部分访问一些数据.任何想法
- 验证VueJS中模型中的数据?任何Vue验证器都不会'不起作用