我知道这是一个重复的问题,但我面临着使用slim framework webservices的angularjs的问题。
我创建了webservice来获取学生网址的记录,如:
http://www.slim.local/api/getstudent/1
苗条代码(网络服务):
//Get Single user
$app->get('/api/getstudent/{id}',function(Request $request, Response $response){
$id = $request->getAttribute('id');
$sql = "select * from student where id = $id";
try{
//Get object db
$db = new db();
//connect
$db = $db->connect();
$stmt = $db->query($sql);
$student = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($student);
}catch(PDOException $e){
echo '{"Error":{"text":'.$e->getMessage().'}';
}
});
上面的代码正在使用POSTMAN测试。
当我们尝试从angularjs中搜索相同的网址时,它会给出404错误,网址会像这样创建:GET http://www.slim.local/api/getstudent?id=2 404 Not Found
角度代码是:
RoutingApp = angular.module('RoutingApp', ['ngRoute']);
RoutingApp.config( [ '$routeProvider', '$locationProvider', function( $routeProvider, $locationProvider )
{
$routeProvider
.when('/home', {
templateUrl: 'template/home.html',
controller: 'homeController',
controllerAs: "homeCtrl"
})
.when('/courses', {
templateUrl: 'template/courses.html',
controller: 'coursesController',
controllerAs: "coursesCtrl"
})
.when('/students', {
templateUrl: 'template/students.html',
controller: 'studentsController',
controllerAs: "studentsCtrl"
}).when('/students/:id', {
templateUrl: 'template/studentDetails.html',
controller: 'studentDetailsController',
controllerAs: "studentDetailsCtrl"
})
.otherwise({
redirectTo: '/home',
});
$locationProvider.html5Mode(true);
} ] ).controller('studentDetailsController', function($http,$routeParams){
var vm = this;
$http({
url: "http://www.slim.local/api/getstudent",
params: {id:$routeParams.id},
method: "get"
}).then(function(response){
vm.student = response.data;
});
});
我们如何使用查询字符串将angularjs url与slim api url进行匹配?
答案 0 :(得分:4)
只需更改创建http get请求的方式:
$http({
url: "http://www.slim.local/api/getstudent/"+$routeParams.id,
method: "get"
})
这是因为你的苗条api服务于网址http://www.slim.local/api/getstudent/1
而不是http://www.slim.local/api/getstudent?id=1
答案 1 :(得分:0)
你做错了方法
试试这个
$http({
url: "http://www.slim.local/api/getstudent",
params: {id:$routeParams.id},
method: "get"
}).then(function(response){
到
$http({
url: "http://www.slim.local/api/getstudent/" + $routeParams.id,
method: "get"
}).then(function(response){
它给出404错误,因为在路线中你设置了路线参数
http://www.slim.local/api/getstudent/{id} //here id is route parameter
并且您将作为get参数传递
http://www.slim.local/api/getstudent?id=2 //here id is $_GET parameter