gpt4 book ai didi

javascript - 用于 Ext JS 的简单 REST API

转载 作者:行者123 更新时间:2023-11-29 05:10:23 30 4
gpt4 key购买 nike

我想开始学习 Ext JS。似乎是一个有趣而强大的框架。

正如我想象的那样,要替换一些非常旧的 PHP/MySQL web 应用程序,我想从一个具有有效 MySQL 连接的 Ext JS 示例开始。我想到了REST,但这只是我的想法,不是必须的。很高兴听到其他解决方案。

所以我的下一个想法是,在 PHP 中找到一个简单的 REST API。似乎它不必非常复杂。只需读取数据库记录、更新、创建,有时还删除数据。用户少。内网环境,所以限制了不同的浏览器。有限的安全要求。在我看来,类似的东西应该已经存在并且工作得相当稳定。

这就是我卡住的地方。

我的 Ext JS 示例在这里: http://examples.sencha.com/extjs/6.2.0/examples/classic/restful/restful.html

我发现的两个最简单的 REST API 是:

1) https://www.leaseweb.com/labs/2015/10/creating-a-simple-rest-api-in-php/

2) https://github.com/mevdschee/php-crud-api

但是 1) 仅用于从 DB 读取,2) 不能正常工作,我可以写但读取不起作用。输出与 1 不同)。

我真的很想专注于 Javascript 和 UI,而不是完全理解 REST/SOAP/CRUD 等等。我只需要将数据写入数据库并从那里读取。有必要这么复杂吗?有人可以给我一个简单轻量级解决方案的提示吗?

另外,我想知道为什么

  • 很多地方有人在谈论 REST,但协议(protocol)似乎没有明确定义。
  • 存在像 Ext JS 这样令人兴奋和复杂的框架。但是几乎没有任何关于如何做后端的信息。 (如果没有后端,它根本无法工作)。

最佳答案

我发现第一个链接中提到的 REST API 对于 Ext JS 示例来说几乎足够了。它只需要一些小的改动,一切正常。参见 here更多细节。

error_reporting(E_ERROR | E_PARSE);

// get the HTTP method, path and body of the request
$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
$input = json_decode(file_get_contents('php://input'),true);

// connect to the mysql database
$link = mysqli_connect('localhost', 'user', 'password', 'table');
mysqli_set_charset($link,'utf8');

// retrieve the table and key from the path
$table = preg_replace('/[^a-z0-9_]+/i','',array_shift($request));
$key = array_shift($request)+0;

// escape the columns and values from the input object
$columns = preg_replace('/[^a-z0-9_]+/i','',array_keys($input));
$values = array_map(function ($value) use ($link) {
if ($value===null) return null;
return mysqli_real_escape_string($link,(string)$value);
},array_values($input));

// build the SET part of the SQL command
$set = '';
for ($i=0;$i<count($columns);$i++) {
$set.=($i>0?',':'').'`'.$columns[$i].'`=';
$set.=($values[$i]===null?'NULL':'"'.$values[$i].'"');
}

// create SQL based on HTTP method
switch ($method) {
case 'GET':
$sql = "select * from `$table`".($key?" WHERE id=$key":''); break;
case 'PUT':
$sql = "update `$table` set $set where id=$key"; break;
case 'POST':
$sql = "insert into `$table` set $set"; break;
case 'DELETE':
$sql = "delete from `$table` where id=$key"; break;
}

// excecute SQL statement
$result = mysqli_query($link,$sql);

// die if SQL statement failed
if (!$result) {
http_response_code(404);
die(mysqli_error());
}

// print results, insert id or affected row count
if ($method == 'GET') {
if (!$key) echo '[';
for ($i=0;$i<mysqli_num_rows($result);$i++) {
echo ($i>0?',':'').json_encode(mysqli_fetch_object($result));
}
if (!$key) echo ']';
} elseif ($method == 'POST') {
echo '{ "success":true, "data":[ { "id":'.mysqli_insert_id($link).' }]}';
} else {
echo mysqli_affected_rows($link);
}

// close mysql connection
mysqli_close($link);

关于javascript - 用于 Ext JS 的简单 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40321349/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com