2016-05-20 12 views
2

Ich benutze Swagger PHP und die meisten Definitionen sind einfach zu definieren, aber ich habe ein Problem mit einem bestimmten Teil der Daten, die nicht Teil einer separaten Klasse, sondern ein assoziatives Array ist.Swagger PHP - Wie definiert man eine verschachtelte Eigenschaft?

Die json Antwort I (vereinfacht für diese Frage) zeigen wollen:

{ 
"id": 1, 
"status": "published", 
"gps": { 
    "lat": "0.00000000", 
    "lng": "0.00000000" 
} 

Die id und status sind einfach genug, um zu definieren, aber die gps ist ein Problem, da es keine separate Klasse ist es zu definieren, in, es ist ein Array innerhalb des Modells. Ist es möglich, dieses Array zu definieren, ohne eine Dummy-Klasse erstellen zu müssen? derzeit

Die Kommentare in der Modelldatei:

/** 
* @SWG\Definition(@SWG\Xml(name="Event")) 
*/ 
class Event extends BaseModel { 
    /** 
    * @SWG\Property(
    *  property="id", 
    *  type="integer", 
    *  example="103" 
    *) 
    * @SWG\Property(
    *  property="status", 
    *  type="string", 
    *  enum={"published", "draft", "suspended"} 
    *  example="published" 
    *) 
    */ 

} 

Antwort

3

genau das gleiche Problem konfrontiert, und gelöst es heute!

Dies ist für Swagger 2,0

Nach der Anmerkung Verschachtelung, die ich verwendet habe, um die verschachtelten Parameter zu erreichen ..

/** 
* @SWG\Post(
* path="/getCustomerByEmail.php", 
* summary="List the details of customer by the email.", 
* consumes={"string"}, 
* produces={"application/json"}, 
* @SWG\Parameter(
*  name="email", 
*  in="body", 
*  description="Customer email to ge the data", 
*  required=true, 
*  @SWG\Schema(
*  @SWG\Property(
*   property="id", 
*   type="object", 
*   @SWG\Property(
*   property="abc", 
*   type="object", 
*   @SWG\Property(
*    property="inner abc", 
*    type="number", 
*    default=1, 
*    example=123 
*   ) 
*  ), 
*   @SWG\Property(
*   property="xyz", 
*   type="string", 
*   default="xyz default value", 
*   example="xyz example value", 
*  ) 
*  ) 
* ) 
* ), 
* @SWG\Response(
*  response=200, 
*  description="Details of the customer" 
* ), 
* @SWG\Response(
*  response=400, 
*  description="Email required" 
* ), 
* @SWG\Response(
*  response=404, 
*  description="Customer does not exist" 
* ), 
* @SWG\Response(
*  response="default", 
*  description="an ""unexpected"" error" 
* ) 
*) 
*/ 
/** 

The output is as below

Hinweis: Ich arbeitete an einem Projekt, das Roh-PHP benötigte, aber immer noch wollte Swagger verwenden. Anstatt also die Modelle zu erstellen, habe ich diese Technik verwendet, um die verschachtelten Parameter zu erstellen.


Edit 1: Ich weiß nicht, was das Problem ist, ist UI wie erwartet, aber während der die Anfrage stellt, gibt es keine Daten in der Post oder die Nutzlast.

Bearbeiten 2: Konvertiert Get to Post. Funktioniert gut mit file_get_contents("php://input")

Verwandte Themen