I have a swagger.json defined like this:
"/API/GetTieredInventory": { "post": { "summary": "Get Tiered inventory from ID", "description": "Gets Tiered inventory for passed ID/IC combination", "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "description": "ID to retrieve Tiered inventory for", "required": true, "type": "string" }, { "name": "ic", "in": "path", "description": "IC to retrieve Tiered inventory for", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation" }, "500": { "description": "Internal error" } } } } },
Now, my API takes the parameters like this:
private function GetTieredInventory() { if($this->get_request_method() != "POST"){ $this->response('Error code 405, Method not allowed.',405); } if(is_array($this->_request['ic'])) { $v = array(); foreach($this->_request['ic'] as $i) { $v[] = "'".$i."'"; } $ic=html_entity_decode(implode(',', $v )); } else { $ic = "'".$this->_request['ic']."'"; } $id=pg_escape_string($this->_request['id']); <SNIP DB CODE> try { $results = pg_query($sql); if(pg_num_rows($results) == 0) { $rows = []; } else { $data = pg_fetch_all($results); foreach($data as $item) { $rows[$item["ic"]][] = $item; } } pg_free_result($results); } catch (Exception $e) { $err = array("message"=>$e->getMessage(), "code"=> $e->getCode(), "error"=>$e->__toString().",\n".print_r($_REQUEST, true)); $this->response($this->toJSON($err),500); } echo json_encode($rows); }
It doesn't matter what the in
value is, I still get a
Notice: Undefined index: ic
and Notice: Undefined index: id
error returned.
I have tried all three of these for both parameters:
"in": "path", "in": "query", "in": "body",
This is how the api is called in my service:
$fields = array( 'id' => $this->compId, 'ic' => $ic ); $fields_string = http_build_query($fields); $url = "/API/GetTieredInventory"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch);
changed the parameters definition like this because ic
can be an array of values:
"parameters": [ { "name": "id", "in": "body", "description": "ID to retrieve Tiered inventory for", "required": true, "type": "string" }, { "name": "ic", "in": "body", "schema": { "type": "array", "items": { "type": "string", "style": "form" } }, "description": "Interchange to retrieve Tiered inventory for", "required": true } ],
But still same errors...:-(
1 Answers
Answers 1
Changing the parameters to this made it work. I am using OAS 2.0
"parameters": [ { "name": "id", "in": "formData", "description": "ID to retrieve Tiered inventory for", "required": true, "type": "string" }, { "name": "ic", "in": "formData", "description": "IC to retrieve Tiered inventory for", "required": true, "type": "string" } ],
0 comments:
Post a Comment