2016-09-14 6 views
0

角度: 私のルートのURLは '/ auth/login'、バックエンドのルートは '/ login'です - すべて動作しますが、私はちょうど両方のURLが異なるので、なぜフロントエンドバックエンドにここで話をする? また、両方のURLに/ loginがあるため(これは前に来るものは - この場合:/ authは関係ありません) ありがとうございます。Angular route urlは、ノードのexpress routeと同じで、バックエンドと 'talk'する必要がありますか?

.... 
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モードセクションを参照してください。

クライアント+サーバーAPI間のリンクは、$http個の要求を発生させた場合にのみ発生します。 $httpリクエストでは、リクエストするAPIエンドポイントの正確なURLを指定しています。

フロントエンドURLとバックエンド/ API URLに共通するものはありません。注意が必要なのは、$httpリクエストで使用するURLが、バックエンドAPIの有効なURLを指していることだけです。

これ以外の唯一の例外は、現在のブラウザのURLを使用してヒットするAPIエンドポイントを決定する、ある種の魔法を実行するようにアプリをコーディングした場合です。これは非常にまれなケースです。アプリがこのようなことをしている場合は、その機能をカスタムビルドしなければならないため、確実に知っているでしょう。

うまくいけば、それをクリアしてください。

+0

前線と後ろのURLが何も共通する必要がないと言ったとき、私は何を意味するのか分かりません.-私は/ allusersに$ httpリクエストを行い、バックエンドには私が得るルートがあります私が望むもの(この場合はすべてのユーザー)が、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

関連する問題