我目前正在尝试使用Erlang开发REST API。我使用OpenAPI(Swagger)定义了API,并想使用其openapi-generator创建存根和一些帮助程序代码。这也可以工作,并且会生成一些代码,但是我从那里找不到任何关于我必须做什么的文档。
对于我的问题的解释,我将参考他们的sample output from code generation for erlang-server。
我目前有两个主要问题:
init/0
或start/0
函数)handle_request
,但是执行路径对我来说似乎有点奇怪。在openapi_router中,他们将openapi_pet_handler
定义为'AddPet'
的处理程序。在that module中,有一个名为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
运行代码。使用钢筋似乎无法实现。我没有找到钢筋启动程序的特定命令。如果使用钢筋,您似乎必须知道入口点(初始化函数)。
但是,我无法在生成的存根代码中找到任何看起来像是init函数的函数。
有人可以解释将openapi-generator生成的存根用于erlang服务器需要做什么吗?我是否必须设置自己的牛仔项目,然后以某种方式将存根链接到其中?如果是,怎么办?