我有一个像这样定义的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);
- }
价值是什么并不重要,我仍然得到一个
注意:未定义的索引:ic和
注意:未定义的索引:id错误
回.
我已经尝试了所有这三个参数:
- "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
- }
- ],
但仍然是同样的错误…