2016-09-14 2 views
0

각도 : 내 경로의 URL은 '/ auth/login'이고, 백엔드의 경로는 '/ login'입니다. 모든 작업이 있지만 두 URL이 서로 다른 이유는 무엇인지 궁금합니다. 여기 백엔드 얘기 나하니? 두 URL에/login이 있기 때문에 제대로 작동합니까? (예 :이 경우 앞에 :/auth는 중요하지 않습니다)? 감사합니다.각도 경로 URL이 노드 표현 경로와 동일해야 백엔드와 '대화'합니까?

.... 
auth.login = function(email, password) { 
     return $http.post('/auth/login', user) 
     .then(function(response){ 
      $rootScope.currentUser = response.data; 
     }) 
    } 
.... 

백엔드 :

app.post('/auth/login', function (req, res, next) { 
    User.findOne({ 
    where: req.body 
    }) 
    .then(function (user) { 
     if (!user) { 
     res.sendStatus(401); 
    } else { 
     req.session.userId = user.id; 
     res.sendStatus(204); 
    } 
    }) 
    .catch(console.error) 

}); 

답변

0

그것은 한 번 각도가로드되어 있기 때문에, 클라이언트 측의 URL을 변경하는 서버 요청을 브라우저에 포함되지 않는 작동합니다. 브라우저가 서버에 요청하는 유일한 요청은 index.html + 사용하는 모든 리소스 (js, css, images)입니다.

이 작동하는 방법에 대한 자세한 내용은 $location guideHashbang & HTML5 모드 섹션을 참조하십시오.

$http 요청을 각도에서 만들면 클라이언트 + 서버 API 간 링크가 발생합니다. $http 요청으로 요청하려는 API 엔드 포인트의 정확한 URL을 지정하고 있습니다.

프런트 엔드/백엔드/API URL에는 공통점이 없습니다. 알고 있어야 할 점은 $http 요청에 사용하는 URL이 백엔드 API의 유효한 URL을 가리키고 있다는 것입니다.

유일한 예외는 현재 브라우저 URL을 사용하여 공격 할 API 엔드 포인트를 결정하는 마술을하도록 앱을 코딩 한 경우입니다. 이것은 매우 드문 경우이며, 앱이 이와 같은 작업을 수행하는 경우 해당 기능을 사용자 정의해야 했으므로 확실하게 알 수 있습니다.

이 기능을 사용하면 원하는대로 기능을 수행 할 수 있기를 바랍니다.

+0

앞뒤가 맞지 않는 URL이 공통점이 없다고 말할 때 나는 무슨 뜻인지 이해할 수 없습니다 .- 내가 $ http 요청을/allusers에게하고 백엔드에서 얻을 경로가 있다고 말하면 내가 원하는 (이 경우 모든 사용자)하지만 URL은 요청/사용자를 허용합니다. 그러면 요청이 절대로 올바른 엔드 포인트에 도달하지 않습니다. 필자의 경우와 마찬가지로 http 요청/인증/로그인이 어떻게 끝나고/로그인 할 수 있습니까? – javascript2016

+0

angular는/login URL을 처리하여 상태를로드합니다 (사용하는 라우터에 따라 정의 됨 - 일반적으로 ngRoute 또는 ui-router). 이 상태로 인해 컨트롤러가로드됩니다 (라우트/상태 컨트롤러 또는 일부 중첩 된 디렉티브 컨트롤러). 이 컨트롤러는/auth/login API 엔드 포인트에 비동기'$ http '요청을합니다. – plong0

+0

가능한 한 간단하게/login 프론트 엔드 URL은 API 엔드 포인트/인증/로그인에 '$ http'요청을합니다.하지만 실제로 모든 프론트 엔드 URL이 동일한 '$ http'요청을 할 수 있습니다./auth/login – plong0