我正在使用Slim框架设计REST api。我正在使用数据库mySql。我正在设计这个API。
我正在尝试从我的桌子上获取有关学生的数据。
我这样想: -
<?php
header('Content-type: application/json');
// Include the Slim library
require 'Slim/Slim.php';
// Instantiate the Slim class
$app = new Slim();
// Create a GET-based route
$app->get('/hello/:name', 'hello');
function hello($name)
{
// here is code to access detail of $name
echo $name
// how can i get detail if i have value of name=:kuntal not name=kuntal
}
// Ready the routes and run the application
$app->run();
?>
我正在使用此网址尝试此功能: - 192.168.1.101/hello/:kuntal
我需要获得名称的值 kuntal ,但在功能上我得到的名称值为:kuntal 所以请告诉我如何删除它:(冒号)在名字之前。
这是另一种方法。
如果您了解制作REST API的苗条框架,请告诉我您的建议。 提前谢谢。
答案 0 :(得分:0)
试试这个网址:192.168.1.101/hello/kuntal 我认为这肯定适用于您的代码。
答案 1 :(得分:0)
Slim是一个非常棒的框架。在我开始使用它之前,我对框架,REST,理解HTTP没有经验......我仍然是一个菜鸟,但Slim让它变得有趣。
答案1:
$app->get('/hello/:name', function($name) use ($app) {
// Your mySQL code here
// Process that information into output JSON?
// echo json_encode($array);
});
答案2:
我可以补充一下,您可以查看Idiorm/Paris以了解您的数据库需求吗?与Slim相同的哲学,少即是多。这就是巴黎的代码。
class Friend extends Model {}
$app->get('/hello/:name', function($name) use ($app) {
$friend = Model::factory('Friend')->find_many($name); // Paris: all rows with name
$friendAry = $friend->as_array('id', 'name');
$response = $app->response(); // Slim Response object at work
$response['Content-Type'] = 'application/json';
echo json_encode($friendAry); // Output
});
虽然,问题(也许有人了解更多关于REST的回答)。那个uri真的很棒吗?根据我对REST的理解,我们希望将人们指向资源。我想是名词。我不确定Hello在REST环境中的含义是什么。为什么不使用ID作为slug来创建资源用户或朋友?
$app->get('/friend/:id', function($id) use ($app) {
// Returns the friend with unique id
$friend = Model::factory('Friend')->find_one($id); // Name is already part of obj
$friendAry = $friend->as_array('id', 'name');
echo json_encode($friendAry);
}
然后,您可以处理该信息,使用问候语打包,无论客户期望什么。您可以将名称等额外信息传递给参数。
希望这会有所帮助。很酷的东西。有人给我反馈,让我知道我的想法是否在正确的页面上。我还在学习。
答案 2 :(得分:0)
enter code here
<?php
error_reporting('E_NOTICE ^ E_ALL');
include_once 'api_function.php';
$con = new DB_con();
function getCurrentURL()
{
$currentURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$currentURL .= $_SERVER["SERVER_NAME"];
if($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443")
{
$currentURL .= ":".$_SERVER["SERVER_PORT"];
}
$currentURL .= $_SERVER["REQUEST_URI"];
return $currentURL;
}
if($_POST['action']!="")
{
$action = $_POST['action'];
}
else
{
header("Content-type: application/json; charset=iso-8859-1");
$inputdata = file_get_contents('php://input');
$data = json_decode($inputdata, TRUE);
$action = $data['action'];
}
/**********************select Detail API Starts here**********************/
if($action == 'select')
{
$insert = $con->select("table_name",$data);
$msg = array("result" => $insert);
header('content-type: application/json');
echo json_encode($msg,true);
}
/**********************delete Detail API Ends here************************/
/*2nd file api_function.php*/
error_reporting('E_NOTICE ^ E_ALL');
define('DB_SERVER', 'localhost');
define('DB_USER', 'username');
define('DB_PASS', 'password');
define('DB_NAME', 'db_name');
class DB_con {
protected $conn;
function __construct() {
$this->conn = mysqli_connec`enter code here`t(DB_SERVER, DB_USER, DB_PASS, DB_NAME) or die(mysqli_connection_error($this->conn));
//mysql_select_db(DB_NAME, $conn);
}
/**********************select API Ends here**********************/
public function select($ssTableName, $asFields) {
if (strcmp($asFields['action'], "select") == 0) {
if ($asFields['id'] != '') {
$query_checklogin = mysqli_query($this->conn, "delete from $ssTableName where id='".$asFields['id']."'")or die(mysqli_error($this->conn));
if ($query_checklogin != '') {
$msg = array('msg' => 'succesfully', 'statuscode' => '201');
return $msg;
}
} else {
$deta = array();
$select = mysqli_query($this->conn, "SELECT * from $ssTableName ")or die(mysqli_error($this->conn));
while($row = mysqli_fetch_assoc($select)){
array_push($deta,$row);
}
$msg = array('msg' => 'Record does not exist', 'statuscode' => '202', 'detail'=>$deta);
return $msg;
}
} else {
$msg = array('msg' => 'Something Error','statuscode' => '203');
return $msg;
}
}
/********************** API Ends here**********************/
}
?>