Rad*_*zea 2 php rest http-headers guzzle
我使用Guzzle向Web服务发出请求.
我有JSON文件看起来像这样:
{
"name": "Webservice name",
"apiVersion": "1.0",
"description": "description",
"operations": {
"commandName1": {
"httpMethod": "POST",
"uri": "some/uri/to/some/resource/{value}",
"summary": "description",
"parameters": {
"value": {
"location": "uri",
"description": "description"
}
}
},
"commandName2": {
"httpMethod": "POST",
"uri": "some/uri/to/some/resource/{value}",
"summary": "description",
"parameters": {
"value": {
"location": "uri",
"description": "description"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且使用它的代码看起来像这样:
$client = new Client(); // instance of Guzzle\Service\Client
$this->client->setDefaultOption(
'auth',
array('admin', 'admin', 'Basic')
);
$this->client->setDefaultOption(
'headers',
array('Accept' => 'text/html', 'Content-Type' => 'text/html')
);
$description = ServiceDescription::factory('/path/to/json/file/with/routes');
$client->setDescription($description);
$params = array(
'command.request_options' = array(
'timeout' => 5,
'connect_timeout' => 2
)
);
$command = $client->getCommand('commandName1', $params);
$command->prepare();
$client->execute($command);
Run Code Online (Sandbox Code Playgroud)
如您所见,我在PHP代码中指定了Content-Type和Accept标题.有没有什么方法可以在JSON文件中移动该信息并为每个操作指定不同的值?例如:我希望"commandName1"将HTML作为内容类型,而"commandName2"则具有JSON.
我想这样做是为了避免大量的代码重复.
在过去的2个小时里,我一直在网上和Guzzle的文档中看到它并且空了.但是,在我看来,文档写得很差1并且在阅读时我确实错过了过去的内容.所以它很有可能再次发生.
有没有人不得不做这样的事情?你是怎么解决的?先感谢您.
1 ="写得不好"我实际上意味着每个部分都是不完整的.每一章似乎都触及一个主题,但绝不提供实际的完整或深入的参数,方法等描述或其全部功能.有NO代码片段是一个SSCCE,这样你可以看到它在你眼前的工作,在不到2分钟的复制粘贴的.但这是另一个主题......
我查看了Guzzle的源代码,实际上没有办法将这些信息添加到JSON文件中.
但是我成功地改变了这个:
$params = array(
'command.request_options' = array(
'timeout' => 5,
'connect_timeout' => 2
)
);
Run Code Online (Sandbox Code Playgroud)
对此:
$params = array(
'command.request_options' => array(
'timeout' => 5,
'connect_timeout' => 2
),
'command.headers' => array(
'Accept' => 'whatever value I want',
'Content-Type' => 'whatever value I want'
)
);
Run Code Online (Sandbox Code Playgroud)
它起作用了.
由于代码的这一部分是在每个其他类使用的单独/公共类中,因此没有代码重复,因此它可以工作......有点.
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |