Maartz

Maartz

What do you use for endpoint documentation?

Hi folks,

I’m wondering what do you use to document your Phoenix endpoints?
Is there anything that exists to be somehow connected to your views/controller and infer based on the modules used the content of the endpoint?

First Post!

sezaru

sezaru

I don’t know if I got your question right.. Do you mean your routes? Do you want a way to organize all your routes in a central manner so people can easily see all the routes and have easy access to its documentation without needing to know where to controller’s files are located?

If so, what I do is first create a pages/API.md file in the root of the project, with something like this:

# APIs

## context 1

  > [/api/v1/context_1/my_api_call](`CoreWeb.V1.Context1Controller.my_api_call/2`)
  > [/api/v1/context_1/my_other_api_call](`CoreWeb.V1.Context1Controller.my_other_api_call/2`)

Then change mix.exs with:

def project do
  ...
  docs: docs()
end

defp docs do
  [
    main: "api",
    extras: ["pages/API.md"]
  ]
end

And then, finally, at the Context1Controller file, I simply use @doc to document the functions:

  @doc """
  blablabla
  """
  def my_api_call(conn, _), do: ...

  @doc """
  blablabla
  """
  def my_other_api_call(conn, _), do: ...

This will generate a Page in Exdocs.

Most Liked

webuhu

webuhu

I’m also not sure if I really understand your goal.
For API documentation I do in one of my project pass the Plug conn in every API Endpoint test to a custom Docs.WebAPI.generate_doc(conn, description) function. This function simplified formulated appends the documentation to a markdown file - also hooked then as docs - extras into the ExDocs documentation.

Means my solution is based on: github.com/api-hogs/bureaucrat

The result could be something like: developer.stadtmacherei-salzburg.at/backend/live/web_api_endpoints.html
By the way this project is nearly on ice - so if you find something totally done wrong - anyway let me know.

ityonemo

ityonemo

I got the ok to open source some openAPI work were doing at work; it will take an openApi (swagger) y’all and generate a router for you, so you embed your docs in the openApi format.

thiagomajesk

thiagomajesk

Never used another tool other than Swagger. Doing it in Elixir though - in contrast with something that is statically typed - it’s a little pain in the ass to configure because we don’t have those guarantees to infer from.

Last Post!

Maartz

Maartz

This looks great. Unfortunately, we’ve got not enough tests to build the doc this way. Definitely, it’ll be a goal to reach.

Where Next?

Popular in Discussions Top

mbenatti
Following https://github.com/tbrand/which_is_the_fastest |> https://raw.githubusercontent.com/tbrand/which_is_the_fastest/master/imgs...
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
MarioFlach
Hello, I want to share a project I’ve been working on for a while: https://github.com/almightycouch/gitgud Background Some time ago I ...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New
eteeselink
Hi all, In the last days, two things happened: A blog post titled “They might never tell you it’s broken” made the rounds. It’s about ...
New
matthias_toepp
I’d love to hear what people think about Wisp, the new Gleam web framework started by Gleam’s primary creator Louis Pilfold. Gleam, alon...
New
arcanemachine
https://nitter.net/josevalim/status/1744395345872683471 https://twitter.com/josevalim/status/1744395345872683471
New

Other popular topics Top

hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

We're in Beta

About us Mission Statement