LogoutボタンがフェニックスのテンプレートにあるPhoenixアプリケーションで作成されたログアウトシステムを持っています(下の3つのコードスニペット参照)。これは正常に動作します。フェニックスJSON API - コントローラで正しい機能を呼び出すように経路を設定する
フェニックステンプレート:/web/templates/layout/app.html.eex
<%= link "Logout", to: auth_path(@conn, :delete), method: :delete, class: "btn btn-danger" %>
フェニックスルート:/web/router.ex
関連するルートはルートを削除します。
scope "/auth", AdminApi do
pipe_through :browser
get "/:provider", AuthController, :index
get "/:provider/callback", AuthController, :callback
delete "/logout", AuthController, :delete
end
フェニックスコントローラ:/web/controllers/auth_controller.ex
def delete(conn, _params) do
conn
|> put_flash(:info, "You have been logged out!")
|> configure_session(drop: true)
|> redirect(to: "/")
end
私は同じことを実現しようとしているが、としています別のフロントエンドとP JSON APIとしてのhoenix
アイデアは、フロントエンドはAJAXは、関連するAPIエンドポイントに要求をDELETEなることですし、ルートは、そのコールをキャッチし、auth_controllerで削除機能を起動します。
ルートを設定してコントローラ内の関連する機能を起動するにはどうすればよいですか?
PS CORSプラグは、など他のルートのために働いているように私は、それがCORSの問題ではありません確信している「/ AUTH /:プロバイダ」の下
は、私がこれまで持っているものです。
フロントエンドからAJAX要求
var url = ENV.apiProtocol + ENV.apiHost + "/api/auth";
Ember.$.ajax({
url : url,
type: "DELETE",
success: function(response){
console.log(response)
},
error: function(response) {
console.log(response)
}
});
フェニックスルート:/web/router.ex
scope "/api", AdminApi do
pipe_through: api
resources "/auth/:provider", AuthController, except: [:new, :edit]
resources "/auth", AuthController, except: [:new, :edit]
end
フェニックス・コントローラ:/web/controllers/auth_controller.ex
def delete(conn, _params) do
conn
|> put_flash(:info, "You have been logged out!")
|> configure_session(drop: true)
|> redirect(to: "/")
end
これはどの部分がうまくいかないのですか?あなたが共有できるエラーが出ていますか? –
エラーが「DELETE/api/auth(AdminApi.Router)のルートが見つかりません」と表示されます – AJP
'mix phx.routes'を実行すると、リストされているものがありますか?あなたはあなたのphoenixサーバを再起動しようとしましたか? –