php – SwaggerUI传递参数
发布时间:2020-12-13 13:18:14 所属栏目:PHP教程 来源:网络整理
导读:我有一个像这样定义的swagger.json: "/API/GetTieredInventory": { "post": { "summary": "Get Tiered inventory from ID","description": "Gets Tiered inventory for passed ID/IC combination","produces": [ "application/json" ],"parameters": [ { "n
我有一个像这样定义的swagger.json:
"/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","description": "IC to retrieve Tiered inventory for","type": "string" } ],"responses": { "200": { "description": "successful operation" },"500": { "description": "Internal error" } } } } }, 现在,我的API采用如下参数: 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); } 价值是什么并不重要,我仍然得到一个 我已经尝试了所有这三个参数: "in": "path","in": "query","in": "body", 这是在我的服务中调用api的方式: $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); 像这样改变了参数定义,因为ic可以是一个值数组: "parameters": [ { "name": "id","type": "string" },{ "name": "ic","schema": { "type": "array","items": { "type": "string","style": "form" } },"description": "Interchange to retrieve Tiered inventory for","required": true } ], 但仍然是同样的错误… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |