我在后端服务器/api/v1/hotels/:hotel_id/rooms/:id
但是,我不知道如何利用Angular ui-router在前端实现RESTful API。
关于我目前的代码。
当我想显示属于Hotel id 1
的房间列表时但是,我想让我的路线更加RESTful。
看起来应该是
但是,当前的ui路由器配置将不允许我这样做。
我如何调整我的ui路由器配置以满足我的要求。
谢谢。
.state('admin.hotels', {
url: '/hotels',
template: '<div ui-view class="fade-in"></div>',
controller: 'hotelBaseCtrl',
resolve: load(['js/services/hotel_service.js',
'./js/controllers/hotel/base_controller.js'])
})
.state('admin.hotels.index', {
url: '/index',
templateUrl: './admin_tpl/hotel/index.html',
resolve: load([
'./js/controllers/hotel/index_controller.js',
])
})
.state('admin.rooms', {
url: '/rooms',
template: '<div ui-view class="fade-in"></div>',
controller: 'roomBaseCtrl',
resolve: load(['js/services/room_service.js',
'./js/controllers/room/base_controller.js'])
})
.state('admin.rooms.index', {
url: '/:hotel_id',
templateUrl: './admin_tpl/room/index.html',
resolve: load([
'./js/controllers/room/index_controller.js',
])
})
(function() {
'use strict';
angular.module('roomModule', [])
.factory('roomService', ['$resource',
function($resource, $http) {
var room = $resource('/api/v1/hotels/:hotel_id/rooms/:room_id', {
hotel_id : '@hotel_id',
room_id : '@room_id',
}, {});
return room ;
}
]);
}());
当我触发#/admin/hotels/1/rooms/index
它会告诉我未知的路线行为
但是,我认为这种URL更加RESTful。
我期望的是#/admin/hotels/1/rooms/index
请求
这会触发'admin.hotels.rooms.index'
州。
1
是hotel_id
使用AngularJS似乎难以实现RESTful API的那种?
.state('admin.hotels', {
url: '/hotels',
template: '<div ui-view class="fade-in"></div>',
controller: 'hotelBaseCtrl',
resolve: load(['js/services/hotel_service.js',
'./js/controllers/hotel/base_controller.js'])
})
.state('admin.hotels.index', {
url: '/index',
templateUrl: './admin_tpl/hotel/index.html',
resolve: load([
'./js/controllers/hotel/index_controller.js',
])
})
.state('admin.hotels.rooms', {
url: '/rooms',
template: '<div ui-view class="fade-in"></div>',
controller: 'roomBaseCtrl',
resolve: load(['js/services/room_service.js',
'./js/controllers/room/base_controller.js'])
})
.state('admin.hotels.rooms.index', {
url: '/:hotel_id',
templateUrl: './admin_tpl/room/index.html',
resolve: load([
'./js/controllers/room/index_controller.js',
])
})
答案 0 :(得分:0)
对于多个可选路线参数,例如/posts/tagged/:tag/page/:page
现在看来唯一的解决方案是声明多条路线,即/posts/tagged/:tag
和/posts/tagged/:tag/page/:page
。