Skip to content
/ http Public

[READONLY] HTTP client and server libraries

License

Notifications You must be signed in to change notification settings

cakephp/http

Folders and files

NameName
Last commit message
Last commit date

Latest commit

264af00 · Dec 7, 2024
Apr 11, 2023
Sep 22, 2023
Mar 26, 2023
Sep 3, 2023
Aug 17, 2022
Dec 29, 2022
Nov 29, 2022
Apr 11, 2023
May 11, 2022
Apr 5, 2023
Mar 26, 2023
Nov 2, 2019
Sep 22, 2021
Mar 26, 2023
Apr 5, 2023
Dec 29, 2020
Feb 22, 2020
Apr 24, 2023
Nov 12, 2020
Mar 26, 2023
Apr 11, 2023
Feb 3, 2023
Apr 24, 2023
Apr 11, 2023
Dec 7, 2024
Apr 11, 2023
Dec 19, 2021
May 26, 2023

Repository files navigation

Total Downloads License

CakePHP Http Library

This library provides a PSR-15 Http middleware server, PSR-7 Request and Response objects, and a PSR-18 Http Client. Together these classes let you handle incoming server requests and send outgoing HTTP requests.

Using the Http Client

Sending requests is straight forward. Doing a GET request looks like:

use Cake\Http\Client;

$http = new Client();

// Simple get
$response = $http->get('http://example.com/test.html');

// Simple get with querystring
$response = $http->get('http://example.com/search', ['q' => 'widget']);

// Simple get with querystring & additional headers
$response = $http->get('http://example.com/search', ['q' => 'widget'], [
  'headers' => ['X-Requested-With' => 'XMLHttpRequest'],
]);

To learn more read the Http Client documentation.

Using the Http Server

The Http Server allows an HttpApplicationInterface to process requests and emit responses. To get started first implement the Cake\Http\HttpApplicationInterface A minimal example could look like:

namespace App;

use Cake\Core\HttpApplicationInterface;
use Cake\Http\MiddlewareQueue;
use Cake\Http\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

class Application implements HttpApplicationInterface
{
    /**
     * Load all the application configuration and bootstrap logic.
     *
     * @return void
     */
    public function bootstrap(): void
    {
        // Load configuration here. This is the first
        // method Cake\Http\Server will call on your application.
    }

    /**
     * Define the HTTP middleware layers for an application.
     *
     * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to set in your App Class
     * @return \Cake\Http\MiddlewareQueue
     */
    public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
    {
        // Add middleware for your application.
        return $middlewareQueue;
    }

    /**
     * Handle incoming server request and return a response.
     *
     * @param \Psr\Http\Message\ServerRequestInterface $request The request
     * @return \Psr\Http\Message\ResponseInterface
     */
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return new Response(['body'=>'Hello World!']);
    }
}

Once you have an application with some middleware. You can start accepting requests. In your application's webroot, you can add an index.php and process requests:

<?php
// in webroot/index.php
require dirname(__DIR__) . '/vendor/autoload.php';

use App\Application;
use Cake\Http\Server;

// Bind your application to the server.
$server = new Server(new Application());

// Run the request/response through the application and emit the response.
$server->emit($server->run());

You can then run your application using PHP's built in webserver:

php -S localhost:8765 -t ./webroot ./webroot/index.php

For more information on middleware, consult the documentation