当前位置: 首页 > 知识库问答 >
问题:

如何在guzzle中传递参数以删除请求

越俊驰
2023-03-14

我使用guzzle作为http客户端来测试我的symfony api。

有一个url选项在留档,但我如何通过userid

当我用curl测试的时候

curl-i-X删除http://localhost/us/serenify/web/app_dev.php/userapi/delete/1/6

我的api运行良好,显示了适当的响应。

但是我不能用guzzle测试它,因为我找不到传递参数的选项。

共有1个答案

萧嘉禧
2023-03-14

下面是一个定义并执行Symfony路由的示例:

{
    "operations": {
        "deleteEntity": {
            "httpMethod": "DELETE",
            "uri": "/userapi/delete/{userid}/{apiid}",
            "summary": "Deletes an entity",
            "parameters": {
                "userid": {
                    "location": "query"
                },
                "apiid": {
                    "location": "query"
                }
            }
        }
    }
}

和代码:

class MyApi
{
    protected $client;

    public function __construct(ClientInterface $client, $baseUrl)
    {
        $this->client = $client;

        //tell the client what the base URL to use for the request
        $this->client->setBaseUrl($baseUrl);

        //fill the client with all the routes
        $description = ServiceDescription::factory("/path/to/routes.json");
        $this->client->setDescription($description);
    }

    public function deleteEntity($userId, $apiId)
    {
        $params = array(
            'userid' => $userId,
            'apiid' => $apiId
        );

        $command = $this->client->getCommand('deleteEntity', $params);
        $command->prepare();

        $response = $this->client->execute($command);

        return $response;
    }
}

$client = new Guzzle\Service\Client();

$api = new MyApi($client, ' http://localhost/us/serenify/web/app_dev.php');
$api->deleteEntity(1, 6);

现在,就目前的情况而言,生成的路由看起来像

http://localhost/us/serenify/web/app_dev.php/userapi/delete?userid=1

如果您不希望Guzzle将参数作为查询参数传递,而是像URL参数一样传递,那么您所要做的就是将JSON定义文件中的参数类型从query更改为uri。

PS:我没有测试上面的代码。可能是现成的,也可能不是。可能需要进行一些小的调整。

 类似资料:
  • 我正试图在post请求负载中传递数组。 有效载荷: 我所做的是: 但我得到的回应是: “找不到请求数据”

  • 问题内容: 我应该如何在jQuery Ajax请求中传递查询字符串值?我目前按照以下方式进行操作,但是我敢肯定有一种更清洁的方法,不需要我手动编码。 我已经看到了将查询字符串参数作为数组传递的示例,但是我看到的这些示例没有使用模型,而是直接使用。例如: 我更喜欢使用$ .ajax()格式,因为这是我习惯的格式(没有特别好的理由-只是个人喜好)。 编辑09/04/2013: 在我的问题结束(如“太过

  • 我应该如何在jQuery Ajax请求中传递查询字符串值?我目前是这样做的,但我肯定有一个更干净的方法,不需要我手动编码。 我见过查询字符串参数作为数组传递的示例,但这些示例没有使用模型,而是直接使用。例如: 我更喜欢使用$.ajax()格式,因为这是我习惯的格式(没有特别好的理由--只是个人偏好)。 编辑09/04/2013: 在我的问题结束后(因为“太本地化”),我发现了一个相关的(相同的)问

  • 问题内容: 以下是我的Ajax 请求: 除了之外,还有其他传递数据的方法吗? 问题答案: 阅读此错误问题:http : //bugs.jquery.com/ticket/11586 引用 RFC 2616字段 该方法请求原始服务器删除 由Request-URI标识 的资源。 因此,您需要在URI中传递数据

  • 我的删除请求是 以下是我的帖子,并得到工作正常的请求。 我没有收到删除请求的问题。我正在使用guzzle 6和laravel 5.2(客户端)

  • 问题内容: 我已经按照此链接中所述的教程进行操作。在下面的代码中,由于某种原因,数据不会作为参数附加到url上,但是如果我使用它直接将其设置为url 则可以。 问题答案: 对于简单的情况,我建议您使用jQuery 的或语法: 如果您需要捕获失败案例,请执行以下操作: 此外,如果您始终发送JSON字符串,则可以在最后使用$ .getJSON 或$ .post以及另一个参数。