我仍然对RESTfull概念感到困惑。我有一个像这里的服务
include '../includeall.php';
$query = Q_GET_FACT_GIVEN_TABLE;
$i = 0;
$queryall = null;
if (isset($_GET['year'])) {
$year = $_GET['year'];
$queryall[$i++] = "f.year=" . $year;
}
if (isset($_GET['period_id'])) {
$period_id = $_GET['period_id'];
$queryall[$i++] = "f.period_id=" . $period_id;
}
if (isset($_GET['month_id'])) {
$month_id = $_GET['month_id'];
$queryall[$i++] = "f.month_id=" . $month_id;]
}
if (isset($_GET['var_in_cat_id'])) {
$var_in_cat_id = $_GET['var_in_cat_id'];
$queryall[$i++] = "f.var_in_cat_id=" . $var_in_cat_id;
}
if (isset($_GET['reg_id'])) {
$reg_id = $_GET['reg_id'];
if ($reg_id == "prop")
$queryall[$i++] = "substring(reg_id,-2)='00' AND reg_id<>'0000'";
else
$queryall[$i++] = "f.reg_id=" . $reg_id;
}
if (isset($_GET['id_prop'])) {
$idprop = $_GET['id_prop'];
$queryall[$i++] = "substring(reg_id,1,2)='$idprop' AND substring(reg_id,-2)<>'00'";
}
if (isset($_GET['data_source_id'])) {
$data_source_id = $_GET['data_source_id'];
$queryall[$i++] = "f.data_source_id=" . $data_source_id;
}
for($i=0;$i<count($queryall);$i++){
$queryi=$queryall[$i];
$query.=" AND ".$queryi;
}
$query.=" ORDER BY reg_id,month_id";
$database = new Database();
$queryResult = $database->query($query);
$resultArray = Utils::convertToJSON($queryResult);
?>
我上面的实现代码是否可以作为Web服务调用? 它包含输出中的JSON实现,作为某些URL上的用户请求。 如果它可以归类为Web服务,我有什么样的服务? 它可以作为RESTfull Web服务调用.. 请帮帮我..
答案 0 :(得分:1)
好吧,你可以认为它是一个Web服务,但它的界面没有REST方面。我称之为......搜索功能。
REST(Representational State Transfer)表示HTTP方法定义您正在执行的操作。例如,DELETE
HTTP请求实际上会导致删除,PUT
将写入资源。如上所述,您的应用程序包含搜索功能,因此不适用。
在php中,您可以确定来自$_SERVER['REQUEST_METHOD']
的请求中使用的HTTP方法。
顺便说一句,您不应将$queryall
初始化为null,而应array()
。您也可以处置$i
,只需撰写$queryall[] = ...
代替$queryall[$i++]
。
此外,您不应通过连接输入字符串来构造数据库查询,因为此代码使您的应用程序容易受到SQL injections的攻击。使用prepared statements可以避免SQL注入漏洞。