How to start a GET/POST/PUT/DELETE request and judge request type in PHP?

前端 未结 2 408
故里飘歌
故里飘歌 2020-12-05 03:38

I never see how is PUT/DELETE request sent.

How to do it in PHP?

I know how to send a GET/POST request with curl:

$ch = curl_ini         


        
相关标签:
2条回答
  • 2020-12-05 04:06

    Generally speaking, if you want to send some "non-GET" request, you'll often work with curl.


    And you'll use the curl_setopt function to configure the request you're sending ; amongst the large amount of possible options, to change the request method, you'll be interested by at least those options (quoting) :

    • CURLOPT_CUSTOMREQUEST : A custom request method to use instead of "GET" or "HEAD" when doing a HTTP request. This is useful for doing "DELETE" or other, more obscure HTTP requests.
    • CURLOPT_HTTPGET : TRUE to reset the HTTP request method to GET.
    • CURLOPT_POST : TRUE to do a regular HTTP POST.
    • CURLOPT_PUT : TRUE to HTTP PUT a file. The file to PUT must be set with CURLOPT_INFILE and CURLOPT_INFILESIZE.


    Of course, curl_setopt is not the only function you'll use ; see the documentation page of curl_exec for an example of how to send a request with curl.

    (Yes, that example is pretty simple, and sends a GET request -- but you should be able to build from there ;-) )

    0 讨论(0)
  • 2020-12-05 04:11

    For DELETE use curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    For PUT use curl_setopt($ch, CURLOPT_PUT, true);

    An alternative that doesn't rely on cURL being installed would be to use file_get_contents with a custom HTTP stream context.

    $result = file_get_contents(
        'http://example.com/submit.php', 
        false, 
        stream_context_create(array(
            'http' => array(
                'method' => 'DELETE' 
            )
        ))
    );
    

    Check out these two articles on doing REST with PHP

    • http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
    • http://www.gen-x-design.com/archives/making-restful-requests-in-php/
    0 讨论(0)
提交回复
热议问题