2016-02-15 17 views
14

würde Ich mag mit Swagger einen json Körper senden, wie folgt aus:verfassen json Körper mit Prahlerei

curl -H "Content-Type: application/json" -X POST -d {"username":"foobar","password":"xxxxxxxxxxxxxxxxx", "email": "[email protected]"}' http://localhost/user/register 

Derzeit habe ich diese Definition:

"/auth/register": { 
     "post": { 
      "tags": [ 
       "auth" 
      ], 
      "summary": "Create a new user account", 
      "parameters": [ 
       { 
        "name": "username", 
        "in": "query", 
        "description": "The username of the user", 
        "required": true, 
        "type": "string" 
       }, 
       { 
        "name": "password", 
        "in": "query", 
        "description": "The password of the user", 
        "required": true, 
        "type": "string", 
        "format": "password" 
       }, 
       { 
        "name": "email", 
        "in": "query", 
        "description": "The email of the user", 
        "required": true, 
        "type": "string", 
        "format": "email" 
       } 
      ], 
      "responses": { 
       "201": { 
        "description": "The user account has been created", 
        "schema": { 
         "$ref": "#/definitions/User" 
        } 
       }, 
       "default": { 
        "description": "Unexpected error", 
        "schema": { 
         "$ref": "#/definitions/Errors" 
        } 
       } 
      } 
     } 
    } 

Aber die Daten gesendet werden in die URL Hier erzeugt die Rotation von Swagger zur Verfügung gestellt:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' 'http://localhost/user/register?username=foobar&password=password&email=foo%40bar.com' 

Ich verstehe, dass die query keywork ist nicht gut, aber ich habe nicht den Weg finden einen JSON Körper zu veröffentlichen. Ich habe versucht formData, aber es hat nicht funktioniert.

Antwort

29

Sie müssen den body Parameter verwenden:

"parameters": [ 
     { 
     "in": "body", 
     "name": "body", 
     "description": "Pet object that needs to be added to the store", 
     "required": false, 
     "schema": { 
      "$ref": "#/definitions/Pet" 
     } 
     } 
    ], 

und #/definitions/Pet als Modell definiert:

"Pet": { 
    "required": [ 
    "name", 
    "photoUrls" 
    ], 
    "properties": { 
    "id": { 
     "type": "integer", 
     "format": "int64" 
    }, 
    "category": { 
     "$ref": "#/definitions/Category" 
    }, 
    "name": { 
     "type": "string", 
     "example": "doggie" 
    }, 
    "photoUrls": { 
     "type": "array", 
     "xml": { 
     "name": "photoUrl", 
     "wrapped": true 
     }, 
     "items": { 
     "type": "string" 
     } 
    }, 
    "tags": { 
     "type": "array", 
     "xml": { 
     "name": "tag", 
     "wrapped": true 
     }, 
     "items": { 
     "$ref": "#/definitions/Tag" 
     } 
    }, 
    "status": { 
     "type": "string", 
     "description": "pet status in the store", 
     "enum": [ 
     "available", 
     "pending", 
     "sold" 
     ] 
    } 
    }, 
    "xml": { 
    "name": "Pet" 
    } 
}, 

Ref: https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.json#L81

OpenAPI/Swagger spec: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameter-object

+0

Es ist perfekt, danke! – ncrocfer

+0

Wie erstellt man ein Modell in Laravel-5.5? –