php – SwaggerUI传递参数

前端之家收集整理的这篇文章主要介绍了php – SwaggerUI传递参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像这样定义的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
    }
],

但仍然是同样的错误 原文链接:https://www.f2er.com/php/136880.html

猜你在找的PHP相关文章