Testowanie REST API

Założenie: Nauczymy się podstawowych metod testowania prostego REST API za pomocą PHP.

Krok po kroku:

  1. Wykonanie żądania GET: Użyjemy funkcji file_get_contents() do pobrania danych z API.
    
    $url = 'https://api.example.com/data';
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    if ($data) {
      print_r($data);
    } else {
      echo "Błąd pobierania danych.";
    }
    

    Ten kod pobiera dane z podanego adresu URL, dekoduja je z JSON i wyświetla. Sprawdź czy adres URL jest poprawny i czy API zwraca dane w formacie JSON.

  2. Weryfikacja odpowiedzi: Po pobraniu danych, sprawdzamy czy odpowiedź jest poprawna.
    
    if (isset($data['status']) && $data['status'] == 'success') {
      echo "Pobrano dane poprawnie!";
    } else {
      echo "Błąd: " . (isset($data['error']) ? $data['error'] : 'Nieznany błąd');
    }
    

    Ten kod sprawdza istnienie klucza ‘status’ i jego wartość. Możesz dostosować ten fragment do struktury odpowiedzi Twojego API.

  3. Wykonanie żądania POST: Do wysłania danych do API użyjemy curl.
    
    $url = 'https://api.example.com/data';
    $data = array('name' => 'Jan', 'age' => 30);
    $data_string = json_encode($data);
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    
    $result = curl_exec($ch);
    curl_close($ch);
    
    echo $result;
    

    Ten kod wysyła żądanie POST z danymi w formacie JSON. Pamiętaj o odpowiednim ustawieniu nagłówków.

Ten przykład pokazuje podstawowe metody testowania REST API w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi metodami HTTP oraz bibliotekami, takimi jak Guzzle.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *