Bonjour à tous,

J'utilise Swagger pour créer une API et jusqu’à maintenant je m'en sortait à peut près bien (je débute) mais la je tombe sur un os et j'espère trouver de l'aide parmi vous

J'ai une fonction qui fonctionne parfaitement via le site laravel qui attend un tableau d'objet (ici Layout) ainsi que 2 paramètre (user et template).
L'idée est de parcourir la liste de Layout et mettre à jour les informations qui vont bien.

J'enlève le superflue et voici se qu'il reste :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public function putLayout(Request $request, $user_id, $template_code) {
    ...
      foreach ($request->template_layouts as $layout) {
        ...
      }
    ...
 }
Donc voici le code swagger qui permet de faire en théorie fonctionner la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
"/api/layouts/{user_id}/{template_code}" : {
      "put" : {
        "tags": [
          "Layouts"
        ],
        "summary": "Layout detail.",
        "description" : "",
        "operationId" : "putLayout",
        "produces": {
          "0": "application/xml",
          "1": "application/json"
        },
        "parameters" :[
          {
            "name" : "user_id",
            "in" : "path",
            "description" : "ID user.",
            "required" : true ,
            "type" : "integer",
            "format": "int64",
            "default" : 1
          },
          {
            "name" : "template_code",
            "in" : "path",
            "description" : "Code type template.",
            "required" : true ,
            "type" : "string",
            "default" : "DEVICES"
          },
          {
            "in" : "body",
            "name" : "template_layouts",
            "description" : "List of layouts",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/layout"
              }
            }
          }
        ],
        "responses" : {
          "200" : {"description" : "Success."},
          "400" : {"description" : "Bad request. ID must be an integer and larger than 0."},
          "401" : {"description" : "Authorization information is missing or invalid."},
          "404" : {"description" : "Specified ID was not found."},
          "5XX" : {"description" : "Unexpected error."}
        }
      }
    }
Voici le résultat :

Nom : swagger.png
Affichages : 1180
Taille : 36,1 Ko

Et quand je l'exécute :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
500
Undocumented
Error: Internal Server Error
ErrorException: Invalid argument supplied for foreach() in file ...


En gros si je return $request->template_layouts c'est vide mais si je return juste $request il me retourne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Response body
 
[
  {
    "layout_x": 0,
    "layout_y": 0,
    "layout_w": 2,
    "layout_h": 2,
    "layout_i": "0",
    "layout_template": 1
  }
]
Je sèche totalement

Si vous avez une idée je prends !

Merci de votre aide.

Steve