我正在使用AngularJS,它使用Ruby on Rails API進行身份驗證。我在AngularJS中使用$ http服務來向後端註冊一個POST請求的用戶,但是我很困惑,因爲我得到的響應總是以HTML格式返回,它是索引頁的,而不是實際的數據rails API。我在AngularJS應用在localhost:9000上運行的本地環境中測試了這一點,Rails API在localhost:3000上。所述AngularJS使用其引導3000
我已通過使用捲曲命令測試滑軌API的響應請求到端口的代理:
$ curl -H "Content-Type: application/json" -d '{"user":{"email":"[email protected]","password":"12345678"}}' -X POST http://localhost:9000/api/users.json
返回從服務器作爲響應:
{"success":true,"info":"Registered","data":{"user":{"id":5,"created_at":"2016-04-24T14:13:24.289Z","updated_at":"2016-04-24T14:13:24.298Z","email":"[email protected]","authentication_token":"-49zyhbCiddYdjssQx6i"},"auth_token":"-49zyhbCiddYdjssQx6i"}}
以下是在前端的代碼,其是在一個AngularJS控制器:
$scope.register = function() {
$http({
url: '/api/users',
method: 'POST',
data: {
user: $scope.user
}
}).then(
// success
function(response) {
console.log(response.data);
console.log(response.auth_token);
tokenHandler.set(response.auth_token);
$location.path('/');
},
// error
function(response) {
$scope.user.errors = response;
});
};
這裏是服務器響應代碼:
class Users::RegistrationsController < Devise::RegistrationsController
respond_to :json
def create
build_resource(sign_up_params)
if resource.save
sign_in resource
render status: 200,
json: {
success: true,
info: "Registered",
data: {
user: resource,
auth_token: current_user.authentication_token
}
}
else
# Otherwise fail
render status: :unprocessable_entity,
json: {
success: false,
info: resource.errors,
data: {}
}
end
end
end
然而,當我打電話登記方法總是在HTML和我的前端的索引文件的響應。
我失去了一些東西在這裏?
在你的'curl'調用中你的URL是'http:// localhost:9000/api/users.json',而在你的$ http'調用中,URL是'/ api/users' – yarons
我試過http http:// localhost:9000/api/users.json在$ http調用中響應,但它與索引頁面的HTML相同。 – AlphaWolf