Hướng dẫn curl call post api php - curl call post api php

1.step từng bước

  • Khởi tạo phiên Curl:
$url = "www.domain.com";
$ch = curl_init($url);
  • Nếu yêu cầu của bạn có các tiêu đề như mã thông báo Bearer hoặc xác định nội dung JSON, bạn phải đặt các tùy chọn
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    0 thành Curl:
$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
  • Nếu bạn muốn đưa tiêu đề vào bộ đầu ra
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    1 đến
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    2:
curl_setopt($ch, CURLOPT_HEADER, false);
  • Đặt tùy chọn
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    3 thành
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    2 để trả về Transfer dưới dạng chuỗi thay vì xuất trực tiếp:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  • Để kiểm tra sự tồn tại của một tên chung trong chứng chỉ Peer SSL có thể được đặt thành
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    5,
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    6,
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    7:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  • Để đăng các trường dưới dạng mảng của Curl:
$fields = array(
    "username" => "user1",
    "password" => "passuser1",
    "gender" => 1
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
  • Thực thi curl và trả về chuỗi. Tùy thuộc vào tài nguyên của bạn, điều này trả về đầu ra như
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    8:
$result = curl_exec($ch);
  • Đóng tài nguyên Curl và tài nguyên hệ thống miễn phí:
curl_close($ch);

2. Sử dụng như một lớp học

  • Toàn bộ lớp
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    9 có thể được mở rộng:
class class_name_for_call_cURL {
    protected function getUrl() {
        return "www.domain.com";
    }

    public function call_cURL() {
        $token = "generated token code";

        $fields = array(
            "username" => "user1",
            "password" => "passuser1",
            "gender" => 1
        );

        $url = $this->getUrl();
        $output = $this->_execute($fields, $url, $token);
        
        // if you want to get json data
        // $output = json_decode($output);
            
        if ($output == "OK") {
            return true;
        } else {
             return false;
        }
    }

    private function _execute($postData, $url, $token) {
        // for sending data as json type
        $fields = json_encode($postData);

        $ch = curl_init($url);
        curl_setopt(
            $ch, 
            CURLOPT_HTTPHEADER, 
            array(
                'Content-Type: application/json', // if the content type is json
                'bearer: '.$token // if you need token in header
            )
        );
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

        $result = curl_exec($ch);
        curl_close($ch);

        return $result;
    }
}
  • Sử dụng lớp và gọi Curl:
$class = new class_name_for_call_cURL();
var_dump($class->call_cURL()); // output is true/false

3. một hàm

  • Một chức năng để sử dụng bất cứ nơi nào cần thiết:
$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
0
  • Hàm này có thể sử dụng chỉ bằng cách:
$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
1

Gần đây tôi đã làm việc trong một dự án mà tôi cần tích hợp API bên ngoài bằng cách sử dụng các yêu cầu HTTP Curl. Đó là lần đầu tiên tôi làm điều này và tôi đã gặp rất nhiều vấn đề khi tìm ra điều này. Tôi đã viết bài đăng này để tôi có thể nhớ các cuộc gọi API Curl của tôi cho lần sau và có lẽ nó cũng có thể giúp bạn. & NBSP;

Các cuộc gọi và chức năng API mà tôi sử dụng trong bài đăng này đều là các ví dụ hoạt động trên PHP -V 5.6.

Hướng dẫn curl call post api php - curl call post api php

Php Curl Basics

Curl là viết tắt của thư viện URL URL và nó cho phép bạn kết nối và giao tiếp với các loại máy chủ khác nhau với nhiều loại giao thức khác nhau (HTTP, HTTPS, FTP, Proxy, Cookies, Muff). Thông tin thêm về cách Curl thực sự hoạt động có thể được tìm thấy trong tài liệu PHP chính thức. Bài viết này sẽ cung cấp nhiều ví dụ chuyên sâu hơn để tích hợp các ứng dụng của bạn.

Tôi đã nhận được rất nhiều câu trả lời về ‘Làm thế nào để Curl thực sự hoạt động và tôi có cảm giác rằng mọi người không biết những gì diễn ra trong một cuộc gọi Curl. Trước khi chúng tôi bắt đầu với bài viết và thiết lập Curl của chúng tôi, tôi đã thêm một ví dụ đơn giản về một yêu cầu Curl đơn giản. Yêu cầu sẽ trả về phản hồi API dưới dạng chuỗi.

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
2

Lưu ý rằng chúng tôi đã lưu trữ curl_exec () của chúng tôi trong một đầu ra $ biến. Biến sản lượng $ này vẫn có sẵn trong chương trình của chúng tôi ngay cả sau khi chúng tôi đóng nó bằng curl_close (). Vì vậy, sau khi chúng tôi thực hiện cuộc gọi của chúng tôi và đóng kết nối, chúng tôi vẫn có thể truy cập kết quả bằng cách sử dụng biến đầu ra $ của chúng tôi.

Bây giờ chúng tôi đã hiểu những điều cơ bản, hãy để cố gắng đưa nó vào một chức năng mà chúng tôi có thể sử dụng lại trong ứng dụng của mình.

Thiết lập Curl PHP

Việc triển khai API bên ngoài vào dự án của bạn có thể sẽ mất nhiều hơn một cuộc gọi API và từ các trang khác nhau trong dự án của bạn. Đây là lý do tại sao tôi đã tạo ra một tập lệnh PHP đơn giản cho phép chúng tôi gọi hàm này, với một tập hợp các tham số và yêu cầu Curl sẽ được thực hiện.

Đảm bảo đặt mã này vào một tệp hoặc địa điểm có thể được truy cập bởi toàn bộ ứng dụng hoặc trang web của bạn. (Tôi đã cập nhật chức năng này để chúng tôi có thể xác định các tiêu đề khi chúng tôi thực hiện cuộc gọi. Tôi đã thêm một phần cho các tiêu đề tùy chỉnh ở phía dưới!)

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
3

Đây là một thiết lập cơ bản để thực hiện cuộc gọi Curl và tôi sử dụng câu lệnh

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
0 để kiểm tra xem cuộc gọi API có phải là một bài đăng, đặt hoặc một cái gì đó khác (nhận hoặc xóa). Tôi sẽ đi sâu hơn vào trường hợp chuyển đổi trong khi chúng tôi thực hiện các yêu cầu cụ thể.

Tôi đã sử dụng

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
1 bên trong
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
2 để xem liệu chúng tôi có muốn cung cấp dữ liệu JSON vào cuộc gọi của chúng tôi hay không. Đối với bài đăng và đặt yêu cầu, việc tuyên bố IF là không thực sự cần thiết bởi vì chúng tôi chỉ sử dụng bài đăng hoặc đặt với dữ liệu, nhưng nó có một bảo mật bổ sung để đảm bảo chức năng cuộc gọi của chúng tôi sẽ bị phá vỡ.

PHP Curl nhận được yêu cầu

Cuộc gọi API đơn giản nhất là cuộc gọi nhận, vì vậy hãy để bắt đầu với điều đó! Hàm Callapi của chúng tôi mong đợi 3 tham số: $ Phương thức, $ URL và $ Dữ liệu. Chúng tôi cần cung cấp các tham số đó cho tất cả các cuộc gọi API của chúng tôi, vì vậy để nhận được Curl, chúng tôi chỉ có thể đặt $ dữ liệu về sai vì chúng tôi không truyền bất kỳ dữ liệu nào với cuộc gọi nhận.

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
4

$ get_data đã trả về tất cả dữ liệu chúng tôi muốn từ API trong chuỗi JSON. Tôi đã sử dụng $ phản hồi để chuyển đổi chuỗi JSON trở lại thành mảng PHP có thể sử dụng. Bạn có thể bỏ qua các bước đó nếu bạn muốn, đây là sở thích cá nhân của tôi. Tôi cũng sử dụng thêm $ lỗi và mảng dữ liệu $ để lưu trữ dữ liệu và lỗi thực tế.

Yêu cầu bài viết Curl PHP

Rõ ràng, một yêu cầu bài viết không yêu cầu dữ liệu. Hãy chắc chắn rằng dữ liệu JSON của bạn là chính xác, nếu không, yêu cầu sẽ tiếp tục trả về lỗi. Mặc dù thì nếu chúng tôi nhận được lỗi từ API, điều đó có nghĩa là các cuộc gọi của chúng tôi đang hoạt động

Trong ví dụ của tôi, tôi đã sử dụng cú pháp CakePHP để thiết lập mảng JSON của tôi, vì vậy hãy nhớ rằng.

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
5

Bởi vì chúng tôi thực hiện một cuộc gọi API với dữ liệu JSON, nên tôi đã chuyển đổi mảng PHP của mình thành chuỗi JSON với

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
3. Phản hồi sẽ xuất hiện dưới dạng chuỗi JSON một lần nữa, vì vậy tôi đã sử dụng
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
4 để chuyển đổi chuỗi JSON trở lại mảng PHP có thể sử dụng. Giống như chúng tôi đã làm trong cuộc gọi của chúng tôi, vì vậy bạn có thể bỏ qua các bước này một lần nữa nếu bạn không cần chúng.

Php Curl đặt yêu cầu

Yêu cầu đặt gần như giống như yêu cầu POST. Tôi đã có một thời gian khó khăn để tìm ra cách truyền dữ liệu vào một cuộc gọi đặt. Nếu chúng ta xem hàm callapi () của chúng ta, bạn sẽ thấy rằng tôi đã thay đổi một số điều giữa yêu cầu đặt và bài đăng. Chúng ta vẫn có thể sử dụng các tham số tương tự trong hàm callapi () của chúng ta như mọi khi.

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
6

Yêu cầu xóa Curl PHP

Yêu cầu xóa lại rất đơn giản. Chúng tôi chỉ có thể nhấn URL API với $ id mà chúng tôi muốn xóa và phân biệt nó, nó đã biến mất mãi mãi.

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
7

Ban đầu, chúng tôi đã xác định chức năng Callapi của chúng tôi với các tiêu đề đặt trước. Nhưng nếu chúng ta, vì một số lý do, cần phải thay đổi tiêu đề một chút cho một cuộc gọi khác? Chúng tôi không muốn viết một chức năng Callapi hoàn toàn mới chỉ để chỉnh sửa một số tiêu đề. Do đó, ở đây, một tùy chọn về cách làm cho các tiêu đề đặt trước linh hoạt:

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
8

Có 2 sự khác biệt ở đây từ chức năng đầu tiên của chúng tôi. 1: Chúng tôi đã thêm một tham số bổ sung trong chức năng của chúng tôi để xác định xem chúng tôi có muốn sử dụng tiêu đề tùy chỉnh hay không. Tôi đặt nó vào

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
5 để cung cấp cho nó một giá trị mặc định. Bây giờ chúng tôi không bắt buộc phải nhập tiêu đề của chúng tôi với mỗi cuộc gọi.

Thay đổi thứ hai là sự kiện nếu chúng tôi đặt các tiêu đề API. Nếu chúng tôi không đưa ra bất kỳ tiêu đề nào khi chúng tôi thực hiện cuộc gọi, thì nó sẽ sử dụng các tiêu đề mặc định của chúng tôi thay vì bị sập. Bây giờ chúng tôi đã sẵn sàng để thêm các tiêu đề tùy chỉnh với cuộc gọi của chúng tôi!

Trong ví dụ này, tôi đã sử dụng các tham số tìm kiếm để tìm kiếm dữ liệu cụ thể trước khi tôi lấy tất cả dữ liệu với API. Để thực hiện tìm kiếm, rõ ràng tôi cần có thể thêm truy vấn tìm kiếm của mình vào các tiêu đề Callapi của tôi. Đây là ví dụ của tôi:

$token = "generated token code";
curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER, 
    array(
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters (can add by strlen($fields))
    )
);
9

Đây chỉ là một ví dụ về cách thêm tiêu đề. Ví dụ của tôi là có được tất cả các hàng nơi một khoản tiền thuê được trả trong 30 ngày qua. $ one_month_ago chỉ là một biến trợ giúp. $ Rent_header là tiêu đề thực tế mà tôi muốn thêm vào các tiêu đề mặc định của mình. Điều này cần phải là một chuỗi !!

Khi bạn đặt tiêu đề, bạn có thể thực hiện một cuộc gọi API thông thường và thêm tiêu đề mới của bạn ở cuối.

Tôi đã không cần sử dụng bất kỳ phương thức gọi API nào khác như Patch hoặc Purge hoặc bất cứ thứ gì tương tự. Những điều này bạn cần phải tìm ra chính mình. Nếu có một số phép thuật đang diễn ra trong bài đăng này, tôi hy vọng các ví dụ của tôi có thể cho bạn hiểu rõ hơn.

Gần đây tôi đã viết phần 2 cho bài đăng này, sẽ nói về việc tạo ra một khóa auth-key (utoken) trước khi chúng tôi thực hiện các cuộc gọi của chúng tôi. Hãy chắc chắn để kiểm tra nó ở đây là tốt!

Làm thế nào để bạn gọi một bài viết Curl?

Người dùng có thể gửi dữ liệu với yêu cầu POST bằng cờ -D. Yêu cầu bài đăng sau gửi cho người dùng và trường vượt qua cùng với các giá trị tương ứng của chúng. Đăng với tùy chọn -D của Curl sẽ bao gồm một tiêu đề mặc định trông giống như: loại nội dung: application/x-www-form-urlencoded.using the -d flag. The following POST request sends a user and a pass field along with their corresponding values. POSTing with curl's -d option will include a default header that looks like: Content-Type: application/x-www-form-urlencoded .

Làm thế nào để thực hiện cuộc gọi API trong PHP?

Để bắt đầu với API này, chúng ta cần gọi đăng ký điểm cuối:..
Thực hiện một yêu cầu bài đăng.Bây giờ chúng tôi đi đến bước đầu tiên và tạo một bộ sưu tập dữ liệu bằng cách sử dụng điểm cuối của Bộ sưu tập.....
Thực hiện yêu cầu nhận.....
Thực hiện một yêu cầu đặt.....
Phương thức xóa.....
Lặp lại nhận yêu cầu và kiểm tra xem dữ liệu có thực sự bị xóa không ..

Tôi có thể sử dụng Curl trong PHP không?

Việc sử dụng Curl trong PHP Curl là tiện ích mở rộng PHP cho phép bạn sử dụng cú pháp URL để nhận và gửi dữ liệu.Curl làm cho nó đơn giản để kết nối giữa các trang web và tên miền khác nhau.cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains.

Làm thế nào vượt qua dữ liệu JSON trong URL bằng Curl trong PHP?

Gửi dữ liệu JSON qua POST với PHP Curl Chỉ định URL ($ url) nơi dữ liệu JSON được gửi.Bắt đầu tài nguyên Curl mới bằng Curl_init ().Thiết lập dữ liệu trong mảng PHP và mã hóa thành chuỗi JSON bằng json_encode ().Gắn dữ liệu JSON vào các trường bài bằng cách sử dụng tùy chọn Curlopt_PostFields.Specify the URL ( $url ) where the JSON data to be sent. Initiate new cURL resource using curl_init(). Setup data in PHP array and encode into a JSON string using json_encode(). Attach JSON data to the POST fields using the CURLOPT_POSTFIELDS option.