Elixir Phoenix Swagger 安全定义
Elixir Phoenix Swagger Security Definitions
我已将 phoenix_swagger 集成到我的后端。我正在根据我的控制器自动生成我的 swagger 文档 UI 并使用它来交互式测试我的端点。
尽管如此,我的路由使用 Bearer JWT 进行保护。我想弄清楚如何在 phoenix_swagger 中定义授权 headers,但绝对没有运气。
非常感谢帮助Elixir的朋友们!
视觉效果:
swagger_path :create_user do
post "/api/v1/users/create"
description "Create a user."
parameters do
user :body, Schema.ref(:Create), "User to save", required: true
end
response 200, "Success"
end
def create_user(conn, query_params) do
changeset = User.changeset(%User{}, query_params)
with {:ok, user} <- Repo.insert(changeset),
{:ok, token, _claims} <- Guardian.encode_and_sign(user) do
conn
|> Conn.put_status(201)
|> render("jwt.json", jwt: token)
else
{:error, changeset} ->
conn
|> put_status(400)
|> render(ErrorView, "400.json", %{changeset: changeset})
end
end
标准 Swagger 2.0 JSON参考:
这是我需要审视自己的事情。这里有几个链接可能会有所帮助。
https://github.com/xerions/phoenix_swagger/blob/master/docs/getting-started.md#router
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object
好的,我想我明白了!将 security [%{Bearer: []}]
添加到 swagger_path 会将授权令牌传递给调用。
控制器:
...
swagger_path :create_user do
post "/api/v1/users/create"
description "Create a user."
parameters do
user :body, Schema.ref(:Create), "User to save", required: true
end
security [%{Bearer: []}]
response 200, "Success"
end
def create_user(conn, query_params) do
changeset = User.changeset(%User{}, query_params)
with {:ok, user} <- Repo.insert(changeset),
{:ok, token, _claims} <- Guardian.encode_and_sign(user) do
conn
|> Conn.put_status(201)
|> render("jwt.json", jwt: token)
else
{:error, changeset} ->
conn
|> put_status(400)
|> render(ErrorView, "400.json", %{changeset: changeset})
end
end
...
路由器:
...
def swagger_info do
%{
info: %{
version: "0.0.1",
title: "Server"
},
securityDefinitions: %{
Bearer: %{
type: "apiKey",
name: "Authorization",
in: "header"
}
}
}
end
...
我已将 phoenix_swagger 集成到我的后端。我正在根据我的控制器自动生成我的 swagger 文档 UI 并使用它来交互式测试我的端点。
尽管如此,我的路由使用 Bearer JWT 进行保护。我想弄清楚如何在 phoenix_swagger 中定义授权 headers,但绝对没有运气。
非常感谢帮助Elixir的朋友们!
视觉效果:
swagger_path :create_user do
post "/api/v1/users/create"
description "Create a user."
parameters do
user :body, Schema.ref(:Create), "User to save", required: true
end
response 200, "Success"
end
def create_user(conn, query_params) do
changeset = User.changeset(%User{}, query_params)
with {:ok, user} <- Repo.insert(changeset),
{:ok, token, _claims} <- Guardian.encode_and_sign(user) do
conn
|> Conn.put_status(201)
|> render("jwt.json", jwt: token)
else
{:error, changeset} ->
conn
|> put_status(400)
|> render(ErrorView, "400.json", %{changeset: changeset})
end
end
标准 Swagger 2.0 JSON参考:
这是我需要审视自己的事情。这里有几个链接可能会有所帮助。
https://github.com/xerions/phoenix_swagger/blob/master/docs/getting-started.md#router
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object
好的,我想我明白了!将 security [%{Bearer: []}]
添加到 swagger_path 会将授权令牌传递给调用。
控制器:
...
swagger_path :create_user do
post "/api/v1/users/create"
description "Create a user."
parameters do
user :body, Schema.ref(:Create), "User to save", required: true
end
security [%{Bearer: []}]
response 200, "Success"
end
def create_user(conn, query_params) do
changeset = User.changeset(%User{}, query_params)
with {:ok, user} <- Repo.insert(changeset),
{:ok, token, _claims} <- Guardian.encode_and_sign(user) do
conn
|> Conn.put_status(201)
|> render("jwt.json", jwt: token)
else
{:error, changeset} ->
conn
|> put_status(400)
|> render(ErrorView, "400.json", %{changeset: changeset})
end
end
...
路由器:
...
def swagger_info do
%{
info: %{
version: "0.0.1",
title: "Server"
},
securityDefinitions: %{
Bearer: %{
type: "apiKey",
name: "Authorization",
in: "header"
}
}
}
end
...