我有以下PHP代码,我打算将其转换为API,以显示托管在PHP应用程序中的体育新闻和存储在MYSQL中的数据,因此我想在Expo React Native开发的应用程序中显示我的新闻记录。
$stmt = $con->prepare("SELECT
url,
cover_page,
alt_img,
mini_title,
mini_description,
date_post,
confg_img,
main_cover
FROM news ORDER BY id_news DESC LIMIT 5");
//$stmt->bind_param("i", $id);
$stmt->execute();
$member = array();
$stmt->bind_result(
$member['url'],
$member['cover_page'],
$member['alt_img'],
$member['mini_title'],
$member['mini_description'],
$member['date_post'],
$member['confg_img'],
$member['main_cover']
);
//Los {}corchetes " " especifican un objeto y " []" se utilizan para matrices de acuerdo con la especificación JSON.
header('Content-Type: application/json');
//header('Content-type: application/json; charset=utf-8');
echo '[';
$count = 0;
while ($stmt->fetch()) {
if( $count ) {
echo ',';
}
//echo json_encode($member, JSON_UNESCAPED_SLASHES);
echo json_encode($member, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
++$count;
}
echo ']';
代码已经为我生成了一个 JSON 结构,以这样的方式以 JSON 格式打印数据:
[{
"url": "es/deportes/futbol/ecuador/ligapro/serie-a/679/oscar-bagui-es-el-hombre-record-en-emelec",
"cover_page": "https://i.imgur.com/UI5IaZ5.jpg",
"alt_img": "Oscar Bagui ",
"mini_title": "Oscar Bagui es el hombre r\u00e9cord en Emelec",
"mini_description": "El defensa el\u00e9ctrico sigue siendo importante para los el\u00e9ctricos",
"date_post": "2020-12-13 21:24:37",
"confg_img": null,
"main_cover": "featured_news"
},{
"url": "es/deportes/futbol/ecuador/ligapro/serie-a/675/la-dirigencia-de-liga-de-quito-quiere-cerrar-el-fichaje-de-este-jugador-del-extranjero",
"cover_page": "https://i.imgur.com/7p6l5ZA.jpg",
"alt_img": "Posible fichaje de Liga de Quito desde la MLS",
"mini_title": "La dirigencia de Liga de Quito quiere cerrar el fichaje de este jugador del extranjero",
"mini_description": "Los albos quieren potenciar su plantilla para 2021",
"date_post": "2020-12-13 13:56:45",
"confg_img": null,
"main_cover": "relevant_news"
}]
但是我这个路由example.com/api/json.php我必须创建一个代码,一个只允许与应用程序连接的键,只有具有应用程序访问键的应用程序才会显示数据,这个键在我看到的一些例子中,我意识到一些参数通过url传递。
所以我的问题是,如何打印数据在博览会反应本机但数据调用与应用程序和api json php之间的键链接
首先,在你的应用程序中,你有一个没有人知道的密钥(例如Stackoverflow1234#@$%x)。
在你的php中,你可以用这个
<?php
if ( isset($_REQUEST['key']) && $_REQUEST["key"]== "Stackoverflow1234#@$%x") {
/// codes to connect to your DB and generate the JSON
}
?>
在你的react-native应用中,你可以使用https://www.yourdomain.com/xxx.php?key=Stackoverflow1234#@$%x来获取数据,例如:
return fetch('https://www.yourdomain.com/xxx.php?key=' + secretkey)
.then((response) => response.json())
.then((responseJson) => {
this.setState({
retrievedata: responseJson
}, function() {
// In this block you can do something with new state.
});
})
.catch((error) => {
console.error(error);
});
根据阿诺德·丹尼尔斯的回答,这里是你的反应要求。
fetch('example.com/api/json', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + btoa('username:password'),
},
body: ...
});
用户名:密码
组合只是一个示例。您可以使用所需的每个编码字符串代替用户名密码组合。它必须对后端 (PHP) 端的令牌有效。
您正在寻找的称为无记名身份验证。使用无记名身份验证,用户必须在授权
HTTP标头中发送令牌才能使用API。
Authorization: Bearer <token>
在PHP中,此标头将作为$_SERVER['HTTP_AUTHORIZATION']
提供。
您可以提取令牌并根据数据库进行验证。
[$type, $token] = explode(' ', $_SERVER['HTTP_AUTHORIZATION'] ?? '', 2) + ['', ''];
if (strtolower($type) !== 'bearer' || !validate_token($token)) {
http_response_code(403); // forbidden
echo "Missing or invalid Bearer authentication";
exit();
}
我正在学习React并尝试创建一个简单的React应用程序。我想使用ES2015模块和一些ES6功能,所以我通过npm安装了Babel和browserify。 这些是我安装的节点模块: 巴贝尔 Babel-preet-es2015 巴贝尔-预设-反应 Babelify 浏览器 大口喝 反应 乙烯基缓冲液 乙烯基-源-流 反应 report-dom 我想使脚本成几个文件(像itemComponent
我使用create-react-app并在其默认端口localhost:3000中托管,并且希望从同一网络上的另一个设备访问它。 我获得了主机IP的IP(使用ifconfig)192.168.0.5,并尝试打开192.168.00.5:3000,但没有成功。 有什么方法可以实现这一点吗?
我试图在Android中创建一个应用程序,仅由1个广播接收器(而不是其他)组成。 广播接收器应该简单地捕捉广播(例如收到的短信,记录信息并完成)。然而,我注意到广播没有被接收器捕捉到,除非我指出我有主活动,如下Androidanifest.xml将显示: 我甚至不需要在应用程序中有一个活动类。此外,如果我在意图过滤器中删除android.intent.category.LAUNCHER或andro
我已经创建了一个TestReact应用程序,并用CreateReact应用程序启动了它。我用Thread start启动它,但这将启动应用程序的调试版本。我执行了npm运行build,它创建了build文件夹,但是当我从/build文件夹启动时,它仍然会启动应用程序的调试版本。我需要它来测试优化版本的性能。我怎样才能解决这个问题?
JOOQ手册规定如下: jOOQ提供的所有发布服务器都将阻塞底层的JDBC连接,但是如果您为jOOQ提供io.R2DBC.spi.connection或io.R2DBC.spi.ConnectionFactory,那么发布服务器将在R2DBC驱动程序上以非阻塞的方式执行查询。 如何使用io.r2dbc.spi.Connection或io.r2dbc.spi.ConnectionFactory提供D
试图从文件,包<code>C:\Users\ADMIN\Desktop\Fintech\node_modules\idb keyval\package。已成功找到json。但是,此软件包本身指定了一个无法解析的模块字段(。实际上,这些文件都不存在: C:\User\ADMIN\Desktop\Fintech\node_modules\idb-keyval\dist\compat.cjs(. loc