我目前正在尝试使用 Erlang 开发 REST API。我使用 OpenAPI (Swagger) 来定义 API,并希望使用他们的openapi-generator来创建存根和一些帮助代码。这也有效并生成了一些代码,但我找不到任何关于我必须从那里做什么的文档。
为了解释我的问题,我将参考他们为 erlang-server 生成代码的示例输出。
我目前有两个主要问题:
- 我找不到代码的入口点(例如 a
init/0
或start/0
函数) - 我不确定我必须实现哪个函数才能在每个端点上执行我的代码。我认为我必须实现
handle_request
,但执行路径对我来说似乎有点奇怪。
实现哪个功能
在openapi_router 中,它们定义openapi_pet_handler
为'AddPet'
. 在该模块中,有一个名为的函数handle_request_json
,它尝试填充请求并在 OK 的情况下执行openapi_logic_handler:handle_request(LogicHandler, ...)
。
openapi_logic_handler:handle_request(Handler, ...)
接受该处理程序并执行Handler:handle_request(OperationID, Req, Context).
. 这使我得出结论,我可能必须openapi_pet_handler:handle_request
使用我的自定义代码来实现。
如何启动服务器
我检查了代码,它似乎cowboy
用作 Web 服务器。至少它cowboy
在生成的openapi.app.src
. 但是,在rebar.config
里面并没有提到牛仔。
在牛仔教程中,他们使用 erlang.mk 来构建他们的项目。这允许他们使用make run
. 对于钢筋,这似乎是不可能的。我没有找到用于 rebar 启动程序的特定命令。如果您使用钢筋,您似乎必须知道入口点(初始化函数)。
但是,我无法在生成的存根代码中找到任何看起来可能是 init 函数的函数。
概括
有人可以解释使用 openapi-generator 为 erlang-server 生成的存根需要做什么吗?我是否必须设置自己的牛仔项目,然后以某种方式将存根链接到其中?如果是,如何?