Merge pull request #33820 from backstage/clairep/update_docs_openAPI
Clairep/update docs open api
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-api-docs': patch
|
||||
---
|
||||
|
||||
Update readme to add instructions for custom api base URL
|
||||
@@ -937,6 +937,12 @@ API belongs to, e.g. `artist-engagement-portal`. This field is optional.
|
||||
The definition of the API, based on the format defined by `spec.type`. This
|
||||
field is required.
|
||||
|
||||
**Note:** Be sure to specify the API base URL of your API within the `spec.definition`. If this is not provided, some widgets (such as OpenAPI) will fallback to the base URL of the Backstage instance. Below are some examples of specifying API base URL for different formats:
|
||||
|
||||
- [OpenAPI 3.x - use the `server` field](https://swagger.io/docs/specification/v3_0/api-host-and-base-path/#:~:text=All%20API%20endpoints%20are%20relative,.com%2Fv1%2Fusers%20.&text=In%20OpenAPI%203.0%2C%20you%20use,base%20URLs%20for%20your%20API.)
|
||||
- [OpenAPI 2.0 (Swagger) — use `host`, `basePath`, and `schemes`](https://swagger.io/docs/specification/v2_0/api-host-and-base-path/)
|
||||
- [AsyncAPI - use the `server` field](https://www.asyncapi.com/docs/concepts/asyncapi-document/structure#servers-field)
|
||||
|
||||
## Kind: Group
|
||||
|
||||
Describes the following entity kind:
|
||||
|
||||
@@ -340,6 +340,34 @@ import { ApiExplorerPage } from '@backstage/plugin-api-docs';
|
||||
/>;
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Try it out" sends requests to the wrong host
|
||||
|
||||
If the **Try it out** feature in the OpenAPI widget sends requests to your Backstage app's URL instead of the actual API host, the OpenAPI spec is missing a `servers` entry.
|
||||
When no `servers` field is present, Swagger UI falls back to `window.location.origin` — the current page's host — as the base URL for all requests.
|
||||
|
||||
**Fix**: add a `servers` field to your API entity's `spec.definition`:
|
||||
|
||||
```yaml
|
||||
# catalog-info.yaml
|
||||
apiVersion: backstage.io/v1alpha1
|
||||
kind: API
|
||||
metadata:
|
||||
name: my-api
|
||||
spec:
|
||||
type: openapi
|
||||
definition: |
|
||||
openapi: "3.0.0"
|
||||
info:
|
||||
title: My API
|
||||
version: v1
|
||||
servers:
|
||||
- url: https://api.example.com/v1 # ← specify your api base URL
|
||||
```
|
||||
|
||||
If you cannot modify the spec (e.g. it is generated or fetched from an external source), you can work around this by adding a `requestInterceptor` that rewrites the URL — see [Adding `requestInterceptor` to Swagger UI](#adding-requestinterceptor-to-swagger-ui) above.
|
||||
|
||||
## Old Frontend System
|
||||
|
||||
If your Backstage app uses the old frontend system, you need to manually wire the plugin into your app as outlined in this section. If you are on the new frontend system, you can skip this.
|
||||
|
||||
Reference in New Issue
Block a user