Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
cff632f5
Commit
cff632f5
authored
Jun 16, 2014
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
beego: swagger EnableDocs
parent
4990d888
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
179 additions
and
0 deletions
+179
-0
beego.go
beego.go
+3
-0
config.go
config.go
+5
-0
docs.go
docs.go
+38
-0
docsSpec.go
docsSpec.go
+133
-0
No files found.
beego.go
View file @
cff632f5
...
...
@@ -383,6 +383,9 @@ func initBeforeHttpRun() {
for
u
,
_
:=
range
StaticDir
{
Get
(
u
+
"/*"
,
serverStaticRouter
)
}
if
EnableDocs
{
Get
(
"/docs/*"
,
serverDocs
)
}
}
// this function is for test package init
...
...
config.go
View file @
cff632f5
...
...
@@ -71,6 +71,7 @@ var (
FlashName
string
// name of the flash variable found in response header and cookie
FlashSeperator
string
// used to seperate flash key:value
AppConfigProvider
string
// config provider
EnableDocs
bool
// enable generate docs & server docs API Swagger
)
func
init
()
{
...
...
@@ -361,6 +362,10 @@ func ParseConfig() (err error) {
if
adminhttpport
,
err
:=
getConfig
(
"int"
,
"AdminHttpPort"
);
err
==
nil
{
AdminHttpPort
=
adminhttpport
.
(
int
)
}
if
enabledocs
,
err
:=
getConfig
(
"bool"
,
"EnableDocs"
);
err
==
nil
{
EnableDocs
=
enabledocs
.
(
bool
)
}
}
return
nil
}
...
...
docs.go
0 → 100644
View file @
cff632f5
package
beego
import
(
"encoding/json"
"github.com/astaxie/beego/context"
)
var
GlobalDocApi
map
[
string
]
interface
{}
func
init
()
{
if
EnableDocs
{
GlobalDocApi
=
make
(
map
[
string
]
interface
{})
}
}
func
serverDocs
(
ctx
*
context
.
Context
)
{
var
obj
interface
{}
if
splat
:=
ctx
.
Input
.
Param
(
":splat"
);
splat
==
""
{
obj
=
GlobalDocApi
[
"Root"
]
}
else
{
if
v
,
ok
:=
GlobalDocApi
[
splat
];
ok
{
obj
=
v
}
}
if
obj
!=
nil
{
bt
,
err
:=
json
.
Marshal
(
obj
)
if
err
!=
nil
{
ctx
.
Output
.
SetStatus
(
504
)
return
}
ctx
.
Output
.
Header
(
"Content-Type"
,
"application/json;charset=UTF-8"
)
ctx
.
Output
.
Header
(
"Access-Control-Allow-Origin"
,
"*"
)
ctx
.
Output
.
Body
(
bt
)
return
}
ctx
.
Output
.
SetStatus
(
404
)
}
docsSpec.go
0 → 100644
View file @
cff632f5
package
beego
const
swaggerVersion
=
"1.2"
type
ResourceListing
struct
{
ApiVersion
string
`json:"apiVersion"`
SwaggerVersion
string
`json:"swaggerVersion"`
// e.g 1.2
// BasePath string `json:"basePath"` obsolete in 1.1
Apis
[]
ApiRef
`json:"apis"`
Infos
Infomation
`json:"info"`
}
type
ApiRef
struct
{
Path
string
`json:"path"`
// relative or absolute, must start with /
Description
string
`json:"description"`
}
type
Infomation
struct
{
Title
string
`json:"title,omitempty"`
Description
string
`json:"description,omitempty"`
Contact
string
`json:"contact,omitempty"`
TermsOfServiceUrl
string
`json:"termsOfServiceUrl,omitempty"`
License
string
`json:"license,omitempty"`
LicenseUrl
string
`json:"licenseUrl,omitempty"`
}
// https://github.com/wordnik/swagger-core/blob/scala_2.10-1.3-RC3/schemas/api-declaration-schema.json
type
ApiDeclaration
struct
{
ApiVersion
string
`json:"apiVersion"`
SwaggerVersion
string
`json:"swaggerVersion"`
BasePath
string
`json:"basePath"`
ResourcePath
string
`json:"resourcePath"`
// must start with /
Consumes
[]
string
`json:"consumes,omitempty"`
Produces
[]
string
`json:"produces,omitempty"`
Apis
[]
Api
`json:"apis,omitempty"`
Models
map
[
string
]
Model
`json:"models,omitempty"`
}
type
Api
struct
{
Path
string
`json:"path"`
// relative or absolute, must start with /
Description
string
`json:"description"`
Operations
[]
Operation
`json:"operations,omitempty"`
}
type
Operation
struct
{
HttpMethod
string
`json:"httpMethod"`
Nickname
string
`json:"nickname"`
Type
string
`json:"type"`
// in 1.1 = DataType
// ResponseClass string `json:"responseClass"` obsolete in 1.2
Summary
string
`json:"summary,omitempty"`
Notes
string
`json:"notes,omitempty"`
Parameters
[]
Parameter
`json:"parameters,omitempty"`
ResponseMessages
[]
ResponseMessage
`json:"responseMessages,omitempty"`
// optional
Consumes
[]
string
`json:"consumes,omitempty"`
Produces
[]
string
`json:"produces,omitempty"`
Authorizations
[]
Authorization
`json:"authorizations,omitempty"`
Protocols
[]
Protocol
`json:"protocols,omitempty"`
}
type
Protocol
struct
{
}
type
ResponseMessage
struct
{
Code
int
`json:"code"`
Message
string
`json:"message"`
ResponseModel
string
`json:"responseModel"`
}
type
Parameter
struct
{
ParamType
string
`json:"paramType"`
// path,query,body,header,form
Name
string
`json:"name"`
Description
string
`json:"description"`
DataType
string
`json:"dataType"`
// 1.2 needed?
Type
string
`json:"type"`
// integer
Format
string
`json:"format"`
// int64
AllowMultiple
bool
`json:"allowMultiple"`
Required
bool
`json:"required"`
Minimum
int
`json:"minimum"`
Maximum
int
`json:"maximum"`
}
type
ErrorResponse
struct
{
Code
int
`json:"code"`
Reason
string
`json:"reason"`
}
type
Model
struct
{
Id
string
`json:"id"`
Required
[]
string
`json:"required,omitempty"`
Properties
map
[
string
]
ModelProperty
`json:"properties"`
}
type
ModelProperty
struct
{
Type
string
`json:"type"`
Description
string
`json:"description"`
Items
map
[
string
]
string
`json:"items,omitempty"`
Format
string
`json:"format"`
}
// https://github.com/wordnik/swagger-core/wiki/authorizations
type
Authorization
struct
{
LocalOAuth
OAuth
`json:"local-oauth"`
ApiKey
ApiKey
`json:"apiKey"`
}
// https://github.com/wordnik/swagger-core/wiki/authorizations
type
OAuth
struct
{
Type
string
`json:"type"`
// e.g. oauth2
Scopes
[]
string
`json:"scopes"`
// e.g. PUBLIC
GrantTypes
map
[
string
]
GrantType
`json:"grantTypes"`
}
// https://github.com/wordnik/swagger-core/wiki/authorizations
type
GrantType
struct
{
LoginEndpoint
Endpoint
`json:"loginEndpoint"`
TokenName
string
`json:"tokenName"`
// e.g. access_code
TokenRequestEndpoint
Endpoint
`json:"tokenRequestEndpoint"`
TokenEndpoint
Endpoint
`json:"tokenEndpoint"`
}
// https://github.com/wordnik/swagger-core/wiki/authorizations
type
Endpoint
struct
{
Url
string
`json:"url"`
ClientIdName
string
`json:"clientIdName"`
ClientSecretName
string
`json:"clientSecretName"`
TokenName
string
`json:"tokenName"`
}
// https://github.com/wordnik/swagger-core/wiki/authorizations
type
ApiKey
struct
{
Type
string
`json:"type"`
// e.g. apiKey
PassAs
string
`json:"passAs"`
// e.g. header
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment