Commit 6ae9824
Register handlers in spec order
Closes: #1887
Route registration was emitted in sorted path order, so reordering paths in
the spec had no effect. On routers that match in registration order (Fiber,
Gorilla/mux) this left users no way to disambiguate overlapping paths — e.g.
a request for `/templates/privates/shortcuts` always went to
`/templates/privates/{id}` rather than `/templates/{visibility}/shortcuts`.
kin-openapi stores paths in a map, losing declaration order at parse time,
so enable its origin tracking (`Loader.IncludeOrigin`) to recover each
path's source line onto the OperationDefinition (SpecOrder). Each
GenerateXServer now renders its registration template with operations sorted
by SpecOrder, via a new GenerateTemplatesIntoBuffer that composes passes into
one buffer (GenerateTemplates wraps it).
Model and interface generation are intentionally left in the old sorted
order to preserve any existing ordering behavior — in particular the
order-dependent fallback in name-collision resolution. Only handler
registration follows spec order.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>1 parent 18ef715 commit 6ae9824
43 files changed
Lines changed: 728 additions & 340 deletions
File tree
- examples/webhook
- internal/test
- aggregates/anyof
- bodies/content_types/multi_json
- extensions/x_go_type
- naming/identifiers
- parameters
- path_edge_cases
- roundtrip
- chi/gen
- echov5/gen
- echo/gen
- fiberv3/gen
- fiber/gen
- gin/gen
- gorilla/gen
- iris/gen
- stdhttp/gen
- references/external/removed_ref/gen/spec_base
- schemas/deprecated
- servers
- routeorder
- routers
- basic
- smoke
- chi
- echo
- fiber
- gin
- gorilla
- iris
- std-http
- trailing_slash
- strict
- buffering
- chi
- echo5
- echo
- fiber
- gin
- gorilla
- iris
- stdhttp
- pkg
- codegen
- util
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments