Open API Spex 使用教程

Open API Spex 使用教程

open_api_spexOpen API Specifications for Elixir Plug applications项目地址:https://gitcode.com/gh_mirrors/op/open_api_spex

项目介绍

Open API Spex 是一个用于 Elixir Plug 应用程序的 Open API 规范工具。它允许开发者定义和验证 API 的请求和响应,确保 API 文档的准确性和可靠性。通过集成 Swagger UI,开发者可以交互式地探索和测试 API。

项目快速启动

安装

首先,将 open_api_spex 添加到你的 mix.exs 文件的依赖列表中:

def deps do
  [
    {:open_api_spex, "~> 3.20"}
  ]
end

然后运行 mix deps.get 来安装依赖。

生成规范

在你的应用程序中添加一个 ApiSpec 模块来定义 Open API 规范:

defmodule MyAppWeb.ApiSpec do
  alias OpenApiSpex.{Components, Info, OpenApi, Paths, Server}
  alias MyAppWeb.{Endpoint, Router}

  @behaviour OpenApi

  @impl OpenApi
  def spec do
    %OpenApi{
      info: %Info{
        title: "MyApp API",
        version: "1.0"
      },
      servers: [
        %Server{
          url: "http://localhost:4000"
        }
      ],
      paths: Paths.from_router(Router)
    }
    |> OpenApiSpex.resolve_schema_modules()
  end
end

配置路由

在你的路由文件中配置 Swagger UI 和 API 规范的访问路径:

defmodule MyAppWeb.Router do
  use MyAppWeb, :router

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/" do
    pipe_through :api

    get "/swaggerui", OpenApiSpex.Plug.SwaggerUI, path: "/api/openapi"
  end

  scope "/api" do
    pipe_through :api

    get "/openapi", OpenApiSpex.Plug.RenderSpec, []
  end
end

启动应用

在开发环境中,为了确保生成的规范文件被刷新,你应该禁用缓存:

# config/dev.exs
config :open_api_spex, :cache_adapter, OpenApiSpex.Plug.NoneCache

应用案例和最佳实践

验证请求参数

Open API Spex 可以自动验证请求参数,确保它们符合定义的规范:

defmodule MyAppWeb.UserController do
  use MyAppWeb, :controller

  alias MyAppWeb.Schemas.User

  plug OpenApiSpex.Plug.CastAndValidate, json_render_error_v2: true

  def create(conn, params) do
    # 处理创建用户的逻辑
  end
end

验证响应

在测试中验证响应是否符合规范:

defmodule MyAppWeb.UserControllerTest do
  use MyAppWeb.ConnCase

  test "create user", %{conn: conn} do
    params = %{
      "user" => %{
        "name" => "John Doe",
        "email" => "john.doe@example.com"
      }
    }

    conn = post(conn, "/api/users", params)
    assert json_response(conn, 201)["data"]["name"] == "John Doe"
  end
end

典型生态项目

Swagger UI

Swagger UI 是一个交互式的 API 文档工具,可以通过 Open API Spex 集成到你的 Elixir 应用中,方便开发者查看和测试 API。

Phoenix

Phoenix 是一个 Elixir 的 Web 框架,与 Open API Spex 结合使用,可以快速开发和验证 RESTful API。

通过以上步骤,你可以快速启动并使用 Open API Spex 来定义、验证和文档化你的 Elixir 应用程序的 API。

open_api_spexOpen API Specifications for Elixir Plug applications项目地址:https://gitcode.com/gh_mirrors/op/open_api_spex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲍丁臣Ursa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值