如何使用laravel向box.com API发送帖子请求?

时间:2015-11-14 22:00:57

标签: php api rest laravel

我正在尝试从我的控制器向Box.com API发送帖子请求。该请求会将文件上传到我的Box.com帐户。以下代码在我看来:

<form action="/accept" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}

    <input type="file" name="filename">
    <input type="text" name="parent_id" value="0">

    <button type="submit">Submit</button>
</form>

在我的控制器中,我没有得到任何关于如何将post请求发送到box.com API的线索,该API将使用授权标头发送表单数据。 Box.com API要求授权标头接受请求。

但是,在Laravel文档中,他们找到了以下代码:

return response($content)
        ->header('Content-Type', application/json)
        ->header('Authorization', 'Bearer XXXXXXXXXXXXXXXX');

我可以使用此设置授权标题,然后如何发送表单数据?

以下是接受邮寄请求的Box.com API网址:

https://upload.box.com/api/2.0/files/content

2 个答案:

答案 0 :(得分:1)

要与网络服务(例如box.com)集成,您需要PHP HTTP Client(例如guzzle)才能发送HTTP Requests

对于使用Official SDKCommunity-Built SDK来说,这是一个很好的解决方案。

答案 1 :(得分:1)

我绝对同意pespantelis,使用类似GuzzlePHP HTTP Client是一个很好的方式来实现你想做的事情。

一旦您完成所有设置,只需格式化您的请求,例如您可以按照以下方式执行操作:

Route::get( '/', function ()
{
    $client = new GuzzleHttp\Client( ["base_uri" => "https://upload.box.com/api/2.0/"] );

    $response = $client->request( "GET", "files/content", ["headers" => ["Authorization" => "Bearer XXXXXXXXXXXXXXXX", "Content-Type" => "application/json"]] );

    return Response::json($response);
} );

虽然我会考虑使用Official SDKCommunity-Built SDK作为pespantelis建议,因为它可能更容易掌握,因为它们全部为你准备好。