forked from loafle/openapi-generator-original
* Upgrade erlang-server code generation and fix is_authorized crashes * Introduce structured logging * Improve general formatting * Update generated files * Enable erlang server on CI * Add echo-server testing to CI * Require OTP27 explicitly in the generated rebar.config file * Rework handler and API With this work, json validation becomes optional, fully implemented in the `_api` module as it was before, but without being forcibly called by the `_handler`. It is instead left as optional for the user to take advantage of the exposed callbacks. Jesse also chooses draft-06 as a default, but these can be chosen manually by the user too, as long as jesse implements them. `_handler` also becomes lighter, it now handles all mime types transparently by forwarding to a user-given module that must implement `accept_callback/4` and `provide_callback/4` as described in the `_logic_handler` callbacks. These will simply be the return values of cowboy_rest's `content_types_accepted` and `content_types_provided` respectively, and should simply comply with their defined APIs. They only get two parameters extending the behaviour, so that the user-given callback can pattern-match on them: the path prefix of the logic handler, and the operationID of the call. * Fix return types for provide_callbacks * Upgrade jesse to incur no dependencies The less dependencies the built code requires the better. * Fix dialyzer errors in the generated code * Apply stronger dialyzer checks
37 lines
1.2 KiB
Markdown
37 lines
1.2 KiB
Markdown
# OpenAPI server library for Erlang
|
|
|
|
## Overview
|
|
|
|
An Erlang server stub generated by [OpenAPI Generator](https://openapi-generator.tech) given an OpenAPI spec.
|
|
|
|
Dependencies: Erlang OTP/27 and rebar3. Also:
|
|
- [Cowboy](https://hex.pm/packages/cowboy)
|
|
- [Ranch](https://hex.pm/packages/ranch)
|
|
- [Jesse](https://hex.pm/packages/jesse)
|
|
|
|
## Prerequisites
|
|
|
|
## Getting started
|
|
Use erlang-server with rebar3
|
|
|
|
1, Create an application by using rebar3
|
|
$ rebar3 new app http_server
|
|
|
|
2, Generate erlang-server project using openapi-generator
|
|
https://github.com/OpenAPITools/openapi-generator#2---getting-started
|
|
|
|
3, Copy erlang-server file to http_server project, and don't forget the 'priv' folder.
|
|
|
|
4, Start in the http_server project:
|
|
1, Introduce the following line in the http_server_app:start(_Type, _Args) function
|
|
openapi_server:start(http_server, #{ip => {127,0,0,1}, port => 8080})
|
|
2, Compile your http_server project
|
|
$ rebar3 compile
|
|
3, Start erlang virtual machine
|
|
$ rebar3 shell
|
|
4, Start project
|
|
application:ensure_all_started(http_server).
|
|
|
|
To implement your own business logic, create a module called `http_server_logic` that implements the
|
|
behaviour `openapi_logic_handler`. Refer to `openapi_logic_handler` documentation for details.
|