Update Swagger 's readme.md (#22087)
Build Package Workflow / BUILD_PACKAGE (push) Waiting to run Details
Code scanning - action / CodeQL-Build (push) Waiting to run Details
CI / UTTEST (push) Has been cancelled Details
CI / APITEST_DB (push) Has been cancelled Details
CI / APITEST_DB_PROXY_CACHE (push) Has been cancelled Details
CI / APITEST_LDAP (push) Has been cancelled Details
CI / OFFLINE (push) Has been cancelled Details
CI / UI_UT (push) Has been cancelled Details

Enhance readability of swagger Readme.md file by fixing minor errors

Signed-off-by: chethanm99 <chethanm1399@gmail.com>
This commit is contained in:
Chethan 2025-06-17 16:15:28 +05:30 committed by GitHub
parent ec9d13d107
commit b647032747
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 14 additions and 14 deletions

View File

@ -4,16 +4,16 @@ In Stratoscale, we really like the idea of API-first services, and we also reall
We saw the go-swagger library, and thought that most of it can really help us. Generating code from We saw the go-swagger library, and thought that most of it can really help us. Generating code from
swagger files is a big problem with a lot of corner cases, and go-swagger is doing great job. swagger files is a big problem with a lot of corner cases, and go-swagger is doing great job.
The one thing that we felt missing, is customization of the server to run with our design principles: The one thing that we felt missing was customization of the server to run with our design principles:
* Custom `main` function * Custom `main` function
* Dependency injection * Dependency injection
* Limited scopes with unit testing. * Limited scope with unit testing.
Also: Also:
* Adding you functions to the generated `configure_swagger_*.go` seems to be a burden. * Adding your functions to the generated `configure_swagger_*.go` seems to be a burden.
* Lack of Interface that the service implement. * Lack of Interface that the service implements.
* Complicated and custom http clients and runtime. * Complicated and custom http clients and runtime.
Those are the changes that this contributor templates are providing: Those are the changes that this contributor templates are providing:
@ -22,7 +22,7 @@ Those are the changes that this contributor templates are providing:
### The new `restapi` package exposes interfaces ### The new `restapi` package exposes interfaces
* Those interfaces can implemented by the developer and are the business logic of the service. * Those interfaces can be implemented by the developer and are the business logic of the service.
* The implementation of those is extensible. * The implementation of those is extensible.
* The implementation is separated from the generated code. * The implementation is separated from the generated code.
@ -32,8 +32,8 @@ The `restapi.Handler` (see [example](./example/restapi/configure_swagger_petstor
a standard `http.Handler` a standard `http.Handler`
* Given objects that implements the business logic, we can create a simple http handler. * Given objects that implements the business logic, we can create a simple http handler.
* This handler is standard go http.Handler, so we can now use any other middleware, library, or framework * This handler is a standard go http.Handler, so we can now use any other middleware, library, or framework
that support it. that supports it.
* This handler is standard, so we understand it better. * This handler is standard, so we understand it better.
## Client ## Client
@ -57,7 +57,7 @@ In the [example package](https://github.com/Stratoscale/swagger/tree/master/exam
### [restapi](https://github.com/Stratoscale/swagger/tree/master/example/restapi) ### [restapi](https://github.com/Stratoscale/swagger/tree/master/example/restapi)
This package is autogenerated and contains the server routing and parameters parsing. This package is autogenerated and contains the server routing and parameter parsing.
The modified version contains `restapi.PetAPI` and `restapi.StoreAPI` which were auto generated. The modified version contains `restapi.PetAPI` and `restapi.StoreAPI` which were auto generated.
@ -116,7 +116,7 @@ Let's look how we use this generated code to build our server.
### [internal](https://github.com/Stratoscale/swagger/tree/master/example/internal) ### [internal](https://github.com/Stratoscale/swagger/tree/master/example/internal)
The `internal` package is **not** auto generated and contains the business logic of our server. The `internal` package is **not** auto generated and contains the business logic of our server.
We can see two structs that implements the `restapi.PetAPI` and `restapi.StoreAPI` interfaces, We can see two structs that implement the `restapi.PetAPI` and `restapi.StoreAPI` interfaces,
needed to make our server work. needed to make our server work.
When adding or removing functions from our REST API, we can just add or remove functions to those When adding or removing functions from our REST API, we can just add or remove functions to those
@ -189,7 +189,7 @@ type SwaggerPetstore {
} }
``` ```
Those fields are objects, which implements interfaces declared in the [pet](./example/client/pet) and Those fields are objects, which implement interfaces declared in the [pet](./example/client/pet) and
[store](./example/client/store) packages: [store](./example/client/store) packages:
For example: For example:
@ -234,7 +234,7 @@ security:
The securityDefinitions section defines different security types that your application can handle. The securityDefinitions section defines different security types that your application can handle.
The supported types by go-swagger are: The supported types by go-swagger are:
* `apiKey` - token that should be able to processed. * `apiKey` - token that should be able to be processed.
* `oauth2` - token and scopes that should be processed. * `oauth2` - token and scopes that should be processed.
* and `basic` - user/password that should be processed. * and `basic` - user/password that should be processed.
@ -253,7 +253,7 @@ paths:
- token: [admin] - token: [admin]
``` ```
Here we overridden the scope of token in the POST /pets URL so that only admin can use this API. Here we have overridden the scope of the token in the POST /pets URL so that only admin can use this API.
Let's see how we can use this functionality. Let's see how we can use this functionality.
@ -289,14 +289,14 @@ type Config struct {
This one is a custom defined function that gets the request and can return an error. This one is a custom defined function that gets the request and can return an error.
If the returned error is not nil, and 403 HTTP error will be returned to the client - here the policy If the returned error is not nil, and 403 HTTP error will be returned to the client - here the policy
enforcement comes to place. enforcement comes into play.
There are two things that this function should be aware of: There are two things that this function should be aware of:
1. The user - it can retrieve the user information from the context: `ctx.Value(restapi.AuthKey).(MyUserType)`. 1. The user - it can retrieve the user information from the context: `ctx.Value(restapi.AuthKey).(MyUserType)`.
Usually, a server will have a function for extracting this user information and returns a concrete Usually, a server will have a function for extracting this user information and returns a concrete
type which could be used by all the routes. type which could be used by all the routes.
2. The route - it can retrieve the route using the go-swagger function: `middleware.MatchedRouteFrom(*http.Request)`. 2. The route - it can retrieve the route using the go-swagger function: `middleware.MatchedRouteFrom(*http.Request)`.
So no need to parse URL and test the request method. So no need to parse the URL and test the request method.
This route struct contains the route information. If for example, we want to check the scopes that were This route struct contains the route information. If for example, we want to check the scopes that were
defined for the current route in the swagger.yaml we can use the code below: defined for the current route in the swagger.yaml we can use the code below: