René's URL Explorer Experiment


Title: std-http-server: allow MiddlewareFunc to be emitted as a type alias · Issue #2363 · oapi-codegen/oapi-codegen · GitHub

Open Graph Title: std-http-server: allow MiddlewareFunc to be emitted as a type alias · Issue #2363 · oapi-codegen/oapi-codegen

X Title: std-http-server: allow MiddlewareFunc to be emitted as a type alias · Issue #2363 · oapi-codegen/oapi-codegen

Description: Summary For std-http-server, MiddlewareFunc is currently generated as a named function type: type MiddlewareFunc func(http.Handler) http.Handler This makes the generated middleware type package-specific. In projects that split one OpenAP...

Open Graph Description: Summary For std-http-server, MiddlewareFunc is currently generated as a named function type: type MiddlewareFunc func(http.Handler) http.Handler This makes the generated middleware type package-spe...

X Description: Summary For std-http-server, MiddlewareFunc is currently generated as a named function type: type MiddlewareFunc func(http.Handler) http.Handler This makes the generated middleware type package-spe...

Opengraph URL: https://github.com/oapi-codegen/oapi-codegen/issues/2363

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"std-http-server: allow MiddlewareFunc to be emitted as a type alias","articleBody":"## Summary\n\nFor `std-http-server`, `MiddlewareFunc` is currently generated as a named function type:\n\n```go\ntype MiddlewareFunc func(http.Handler) http.Handler\n```\n\nThis makes the generated middleware type package-specific. In projects that split one OpenAPI spec into multiple generated packages, a shared middleware slice such as:\n\n```go\n[]func(http.Handler) http.Handler\n```\n\ncannot be passed directly into each generated package's `StdHTTPServerOptions.Middlewares`.\n\nEach generated package has its own distinct type, for example:\n\n```go\n[]core.MiddlewareFunc\n[]admin.MiddlewareFunc\n[]public.MiddlewareFunc\n```\n\nThat forces callers to write conversion helpers per generated package, even though the underlying middleware shape is the standard `net/http` middleware signature.\n\n## Proposal\n\nEither emit `MiddlewareFunc` as a type alias:\n\n```go\ntype MiddlewareFunc = func(http.Handler) http.Handler\n```\n\nor add a generator option that allows users to choose alias generation for middleware types.\n\n## Motivation\n\nThis would make generated `std-http-server` middleware easier to compose in applications that:\n\n- generate multiple packages from one or more OpenAPI specs\n- share the same `[]func(http.Handler) http.Handler` middleware chain across those generated servers\n- use dependency injection or shared route registration interfaces\n- want to avoid repetitive conversion helpers like:\n\n```go\nfunc toMiddlewares(mws []func(http.Handler) http.Handler) []gen.MiddlewareFunc {\n    out := make([]gen.MiddlewareFunc, len(mws))\n    for i, mw := range mws {\n        out[i] = mw\n    }\n    return out\n}\n```\n\nWith an alias, callers can pass the shared middleware slice directly while preserving the existing generated API shape.\n\n## Benefits\n\nThis reduces boilerplate and makes the generated `std-http-server` middleware API easier to use with normal Go `net/http` middleware.\n\nToday, when an application has multiple generated server packages, each package gets its own distinct `MiddlewareFunc` type. Even though every type has the same underlying signature, Go does not allow a `[]func(http.Handler) http.Handler` slice to be used as a `[]gen.MiddlewareFunc` slice. It also does not allow one generated package's middleware slice to be reused as another generated package's middleware slice.\n\nUsing an alias would let applications define middleware once:\n\n```go\nmiddlewares := []func(http.Handler) http.Handler{\n    requestIDMiddleware,\n    authMiddleware,\n    loggingMiddleware,\n}\n```\n\nand pass that same slice to every generated `std-http-server` package without conversion.\n\nThat matters most for larger services that split APIs into multiple generated packages but still need one consistent middleware chain for validation, auth, logging, tracing, and metrics. The alias keeps the generated API ergonomic while still documenting the expected middleware shape through the `MiddlewareFunc` name.\n\n## Compatibility\n\nChanging the type to an alias may be source-compatible for most users, but it is technically observable for users relying on `MiddlewareFunc` as a distinct named type.\n\nIf that compatibility risk is too high, a config option would preserve current behavior by default while allowing projects that need shared middleware composition to opt in.","author":{"url":"https://github.com/jay-babu","@type":"Person","name":"jay-babu"},"datePublished":"2026-05-02T20:29:57Z","url":"https://github.com/oapi-codegen/oapi-codegen/issues/2363"}

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:aba17ae3-85c7-ba78-a4a5-5a470b3811ee
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idE84A:151D9E:1B0DF:2380C:6AF9BABD
html-safe-nonceab4db2aba4a05844d21530c310b2ab936ca29766a1ff79e42330f612af780bf9
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODRBOjE1MUQ5RToxQjBERjoyMzgwQzo2QUY5QkFCRCIsInZpc2l0b3JfaWQiOiI3NTE1NTc1MjM1MTAxOTY0OTkwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmaccae8c7bdbd28e4ec3662d97ff0505fc3bffaabd0c388d1f1db98054c5ef32778
hovercard-subject-tagissue:4369946453
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/oapi-codegen/oapi-codegen/2363/issue_layout
twitter:imagehttps://opengraph.githubassets.com/63070e86de6688a531b13972dc8be9c7714a9e17d6db81bfbc9705e268aae0be/oapi-codegen/oapi-codegen/issues/2363
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/63070e86de6688a531b13972dc8be9c7714a9e17d6db81bfbc9705e268aae0be/oapi-codegen/oapi-codegen/issues/2363
og:image:altSummary For std-http-server, MiddlewareFunc is currently generated as a named function type: type MiddlewareFunc func(http.Handler) http.Handler This makes the generated middleware type package-spe...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamejay-babu
hostnamegithub.com
expected-hostnamegithub.com
None612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7
turbo-cache-controlno-preview
go-importgithub.com/oapi-codegen/oapi-codegen git https://github.com/oapi-codegen/oapi-codegen.git
octolytics-dimension-user_id142752710
octolytics-dimension-user_loginoapi-codegen
octolytics-dimension-repository_id173009358
octolytics-dimension-repository_nwooapi-codegen/oapi-codegen
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id173009358
octolytics-dimension-repository_network_root_nwooapi-codegen/oapi-codegen
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release072e34035c13c31543fba9f025cbbbda4210dae4
ui-targetfull
theme-color#1e2327
color-schemelight dark
react-app-nameissues

Links:

Skip to contenthttps://github.com/oapi-codegen/oapi-codegen/issues/2363#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Foapi-codegen%2Foapi-codegen%2Fissues%2F2363
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Foapi-codegen%2Foapi-codegen%2Fissues%2F2363
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=oapi-codegen%2Foapi-codegen
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/2363
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/2363
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/2363
oapi-codegenhttps://github.com/oapi-codegen
oapi-codegenhttps://github.com/oapi-codegen/oapi-codegen
Codehttps://github.com/oapi-codegen/oapi-codegen
Issues228 (228)https://github.com/oapi-codegen/oapi-codegen/issues
Pull requests70 (70)https://github.com/oapi-codegen/oapi-codegen/pulls
Discussionshttps://github.com/oapi-codegen/oapi-codegen/discussions
Actionshttps://github.com/oapi-codegen/oapi-codegen/actions
Projectshttps://github.com/oapi-codegen/oapi-codegen/projects
Security and quality11 (11)https://github.com/oapi-codegen/oapi-codegen/security
Insightshttps://github.com/oapi-codegen/oapi-codegen/pulse
https://github.com/oapi-codegen/oapi-codegen
New issuehttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/2363
New issuehttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/2363
std-http-server: allow MiddlewareFunc to be emitted as a type aliashttps://github.com/oapi-codegen/oapi-codegen/issues/2363#top
https://github.com/jay-babu
jay-babuhttps://github.com/jay-babu
on May 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/2363#issue-4369946453
https://github.com/jay-babu
jay-babuhttps://github.com/jay-babu
on May 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/2363#issuecomment-4364662989
https://github.com/mromaszewicz
mromaszewiczhttps://github.com/mromaszewicz
on May 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/2363#issuecomment-4364698102
https://github.com/jay-babu
jay-babuhttps://github.com/jay-babu
on May 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/2363#issuecomment-4364702087
https://github.com/kefniark
kefniarkhttps://github.com/kefniark
on May 5, 2026https://github.com/oapi-codegen/oapi-codegen/issues/2363#issuecomment-4377723661
Sign up for freehttps://github.com/signup?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/2363
Sign in to commenthttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/2363
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.