Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question: How can I embed swagger UI? #362

Open
dsha256 opened this issue Jan 23, 2023 · 2 comments
Open

Question: How can I embed swagger UI? #362

dsha256 opened this issue Jan 23, 2023 · 2 comments

Comments

@dsha256
Copy link

dsha256 commented Jan 23, 2023

How can I embed swagger UI? For example like so:

url := ginSwagger.URL("http://localhost:8080/swagger/doc.json")
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
@MrGlp
Copy link

MrGlp commented Feb 8, 2023

I need get all interface doc by httprouter, including, but not limited swagger, Now, is there any other ready-made solution?

@riley-ashton
Copy link

Here's a vanilla solution, no server side dependencies:

Have a folder called swagger and use a static route to serve your swagger.yaml or swagger.json file and add this html file in:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="SwaggerUI" />
    <title>SwaggerUI</title>
    <link
      rel="stylesheet"
      href="https://unpkg.com/[email protected]/swagger-ui.css"
    />
  </head>
  <body>
    <div id="swagger-ui"></div>
    <script
      src="https://unpkg.com/[email protected]/swagger-ui-bundle.js"
      crossorigin
    ></script>
    <script
      src="https://unpkg.com/[email protected]/swagger-ui-standalone-preset.js"
      crossorigin
    ></script>
    <script>
      window.onload = () => {
        var url = window.location.search.substring(1);

        if (url.length == 0) {
          url = "swagger.yaml";
        }

        window.ui = SwaggerUIBundle({
          url: url,
          dom_id: "#swagger-ui",
          deepLinking: true,
          presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
          plugins: [SwaggerUIBundle.plugins.DownloadUrl],

          layout: "StandaloneLayout",
        });
      };
    </script>
  </body>
</html>

Note: if you're using .json change the swagger.yaml to swagger.json.

Then static serve the folder from your httprouter

router.ServeFiles("/swagger/*filepath", http.Dir("swagger"))

This will serve the swagger ui file from localhost:4000/swagger/swagger.html


Aside: For generation from source code I use

Use swag or similar to annotate your route handlers

swag init -g cmd/api/main.go -o ./swagger

outputs swag files to a folder called swagger


If anyone wants an example repo, comment asking for one, and I'll make one when I have time

similark pushed a commit to similarweb/httprouter that referenced this issue May 9, 2023
* fix documentation for creating an HTTPScaledObject

Signed-off-by: Marco Piovesana <[email protected]>

* chore: Allow blank issues (julienschmidt#352)

Signed-off-by: Tom Kerkhove <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump github.com/magefile/mage from 1.11.0 to 1.12.1 (julienschmidt#360)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump google.golang.org/grpc from 1.42.0 to 1.43.0 (julienschmidt#358)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* converting bug report issue template to a form issue (julienschmidt#363)

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Allowing cluster-global operation (julienschmidt#269)

* Allowing cluster-global operation

Signed-off-by: Aaron Schlesinger <[email protected]>

* passing less unnecessary data in the operator

Signed-off-by: Aaron Schlesinger <[email protected]>

* setting namespace

Signed-off-by: Aaron Schlesinger <[email protected]>

* updating tests:

Signed-off-by: Aaron Schlesinger <[email protected]>

* Updating deployment cache interfaces

To accommodate multi-namespace gets and watches

Signed-off-by: Aaron Schlesinger <[email protected]>

* starting on deployment cache informer

Signed-off-by: Aaron Schlesinger <[email protected]>

* switching over to informer-based deployment cache

Signed-off-by: Aaron Schlesinger <[email protected]>

* fixing test compile errors and merging fake and in-memory deployment caches

Signed-off-by: Aaron <[email protected]>

* fixing tests

Signed-off-by: Aaron Schlesinger <[email protected]>

* fixing more compile errs

Signed-off-by: Aaron Schlesinger <[email protected]>

* improving logging, and several other small changes

Signed-off-by: Aaron Schlesinger <[email protected]>

* go mod tidy

Signed-off-by: Aaron Schlesinger <[email protected]>

* Adding config validation

Signed-off-by: Aaron Schlesinger <[email protected]>

* improving ns and svc name var names to indicate interceptor

Signed-off-by: Aaron Schlesinger <[email protected]>

* running go mod tidy

Signed-off-by: Aaron Schlesinger <[email protected]>

* removing unused code

Signed-off-by: Aaron Schlesinger <[email protected]>

* passing a function to transform target to in-cluster URL

Signed-off-by: Aaron Schlesinger <[email protected]>

* not requiring namespace for operator

Signed-off-by: Aaron Schlesinger <[email protected]>

* splitting namespace config for operator into watch and current

Signed-off-by: Aaron Schlesinger <[email protected]>

* removing appInfo, passing current namespace everywhere in its place

Signed-off-by: Aaron Schlesinger <[email protected]>

* using proper namespace when creating scaled object

Signed-off-by: Aaron Schlesinger <[email protected]>

* allowing xkcd chart to set ingress namespace

Signed-off-by: Aaron Schlesinger <[email protected]>

* printing namespace in error

Signed-off-by: Aaron Schlesinger <[email protected]>

* using proper fully-qualified hostname of external scaler in scaledobject

Signed-off-by: Aaron Schlesinger <[email protected]>

* adding note on cluster-global vs. namespaced mode

Signed-off-by: Aaron Schlesinger <[email protected]>

* adding note about installing the xkcd chart in cluster-global mode

Signed-off-by: Aaron Schlesinger <[email protected]>

* fixing hostname test

Signed-off-by: Aaron Schlesinger <[email protected]>

* merging scaler queue counts with routing table hosts. removing merge functionality from interceptors

Signed-off-by: Aaron Schlesinger <[email protected]>

* fix assumption in tests that queue has all hosts from routing table

Signed-off-by: Aaron Schlesinger <[email protected]>

* adding test for MergeCountsWithRoutingTable

Signed-off-by: Aaron Schlesinger <[email protected]>

* sleep for longer to wait for server to start

Signed-off-by: Aaron Schlesinger <[email protected]>

* adding handler test for merging hosts

Signed-off-by: Aaron Schlesinger <[email protected]>

* adding test to GetMetrics test cases for host not in queue pinger

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Return custom header when request was returned from a cold start  (julienschmidt#366)

* Add X-KEDA-HTTP-Cold-Start header

- Add X-KEDA-HTTP-Cold-Start header
- Change signature of forwardWaitFunc to include deployment.Status.ReadyReplicas

Signed-off-by: Aaron Wislang <[email protected]>

* Update tests for X-KEDA-HTTP-Cold-Start header

Signed-off-by: Aaron Wislang <[email protected]>

* Update interceptor/main_test.go

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Aaron Wislang <[email protected]>

* add bracket

Signed-off-by: Aaron Wislang <[email protected]>

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Updating dependencies (julienschmidt#348)

* updating dependencies

Signed-off-by: Aaron Schlesinger <[email protected]>

* NullLogger => Discard()

Signed-off-by: Aaron Schlesinger <[email protected]>

* removing redundant import

Signed-off-by: Aaron Schlesinger <[email protected]>

* updating to use go 1.17.2

Signed-off-by: Aaron Schlesinger <[email protected]>

* upgrading vulnerable packages

Signed-off-by: Aaron Schlesinger <[email protected]>

* upgrading sftp

Signed-off-by: Aaron Schlesinger <[email protected]>

* force-upgrading sftp

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump go.uber.org/zap from 1.19.1 to 1.20.0 (julienschmidt#362)

Bumps [go.uber.org/zap](https://github.com/uber-go/zap) from 1.19.1 to 1.20.0.
- [Release notes](https://github.com/uber-go/zap/releases)
- [Changelog](https://github.com/uber-go/zap/blob/master/CHANGELOG.md)
- [Commits](uber-go/zap@v1.19.1...v1.20.0)

---
updated-dependencies:
- dependency-name: go.uber.org/zap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump github.com/go-logr/zapr from 0.4.0 to 1.2.2 (julienschmidt#357)

Bumps [github.com/go-logr/zapr](https://github.com/go-logr/zapr) from 0.4.0 to 1.2.2.
- [Release notes](https://github.com/go-logr/zapr/releases)
- [Commits](go-logr/zapr@v0.4.0...v1.2.2)

---
updated-dependencies:
- dependency-name: github.com/go-logr/zapr
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump k8s.io/apimachinery from 0.23.1 to 0.23.2 (julienschmidt#376)

Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.23.1 to 0.23.2.
- [Release notes](https://github.com/kubernetes/apimachinery/releases)
- [Commits](kubernetes/apimachinery@v0.23.1...v0.23.2)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump k8s.io/client-go from 0.23.1 to 0.23.2 (julienschmidt#375)

Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.23.1 to 0.23.2.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.23.1...v0.23.2)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Compile binaries and docker images with git SHA (julienschmidt#377)

* Compile binaries and docker images with git SHA

Signed-off-by: Aaron Wislang <[email protected]>
Signed-off-by: Ubuntu <azureuser@vm1.dwkkbikwkshepl1jlyp52keone.bx.internal.cloudapp.net>

* Fix test

Signed-off-by: Aaron Wislang <[email protected]>
Signed-off-by: Ubuntu <azureuser@vm1.dwkkbikwkshepl1jlyp52keone.bx.internal.cloudapp.net>

* Apply suggestions from @arschles

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Ubuntu <azureuser@vm1.dwkkbikwkshepl1jlyp52keone.bx.internal.cloudapp.net>

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump github.com/onsi/gomega from 1.17.0 to 1.18.0 (julienschmidt#378)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Configure WhiteSource Bolt for GitHub (julienschmidt#379)

Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com>
Co-authored-by: Tom Kerkhove <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* adding targetPendingRequests to the xkcd helm chart (julienschmidt#373)

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* fixing targetPendingRequests in the HTTPScaledObject v0.2.0 documentation (julienschmidt#372)

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Add TestStreamIsActive (#384)

* Return IsActive error vs log and continue

Signed-off-by: Aaron Wislang <[email protected]>

* Add TestStreamIsActive

Signed-off-by: Aaron Wislang <[email protected]>

* Bump github.com/onsi/gomega from 1.17.0 to 1.18.0 (julienschmidt#378)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Aaron Wislang <[email protected]>

* Configure WhiteSource Bolt for GitHub (julienschmidt#379)

Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com>
Co-authored-by: Tom Kerkhove <[email protected]>
Signed-off-by: Aaron Wislang <[email protected]>

* adding targetPendingRequests to the xkcd helm chart (julienschmidt#373)

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Aaron Wislang <[email protected]>

* fixing targetPendingRequests in the HTTPScaledObject v0.2.0 documentation (julienschmidt#372)

Signed-off-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Aaron Wislang <[email protected]>

* defer grpcServer.Stop()

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Aaron Wislang <[email protected]>

* Don't check error for gprServer

Signed-off-by: Aaron Wislang <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com>
Co-authored-by: Tom Kerkhove <[email protected]>
Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump go.uber.org/zap from 1.20.0 to 1.21.0 (#394)

Bumps [go.uber.org/zap](https://github.com/uber-go/zap) from 1.20.0 to 1.21.0.
- [Release notes](https://github.com/uber-go/zap/releases)
- [Changelog](https://github.com/uber-go/zap/blob/master/CHANGELOG.md)
- [Commits](uber-go/zap@v1.20.0...v1.21.0)

---
updated-dependencies:
- dependency-name: go.uber.org/zap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#390)

Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.43.0 to 1.44.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.43.0...v1.44.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump github.com/onsi/gomega from 1.18.0 to 1.18.1 (#393)

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.18.0...v1.18.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump k8s.io/apimachinery from 0.23.2 to 0.23.3 (#392)

Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.23.2 to 0.23.3.
- [Release notes](https://github.com/kubernetes/apimachinery/releases)
- [Commits](kubernetes/apimachinery@v0.23.2...v0.23.3)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Bump k8s.io/api from 0.23.2 to 0.23.3 (#389)

Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.23.2 to 0.23.3.
- [Release notes](https://github.com/kubernetes/api/releases)
- [Commits](kubernetes/api@v0.23.2...v0.23.3)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Marco Piovesana <[email protected]>

* Update docs/walkthrough.md

Co-authored-by: Aaron Schlesinger <[email protected]>
Signed-off-by: Marco Piovesana <[email protected]>

Co-authored-by: mpiovesana <[email protected]>
Co-authored-by: Tom Kerkhove <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aaron Schlesinger <[email protected]>
Co-authored-by: Aaron Wislang <[email protected]>
Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants