Title: http-api – Make WordPress Core

---

#  Tag Archives: http-api

 [  ](https://profiles.wordpress.org/rmccue/) [Ryan McCue](https://profiles.wordpress.org/rmccue/)
10:34 am _on_ July 27, 2016     
Tags: [4.6 ( 140 )](https://make.wordpress.org/core/tag/4-6/),
[dev-notes ( 621 )](https://make.wordpress.org/core/tag/dev-notes/), http-api   

# 󠀁[HTTP API in 4.6](https://make.wordpress.org/core/2016/07/27/http-api-in-4-6/)󠁿

For WordPress 4.6, the HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol.
HTTP is the underlying protocol used by the World Wide Web and this protocol defines
how messages are formatted and transmitted, and what actions Web servers and browsers
should take in response to various commands. APIAPI An API or Application Programming
Interface is a software intermediary that allows programs to interact with each 
other and share data in limited, clearly defined ways. (`wp_remote_request()` and
family) have undergone a large internal change. Rather than using a WordPress-specific
HTTP library, WordPress now uses the open-source independent [Requests library](http://requests.ryanmccue.info/),
developed by yours truly.

### Why Requests?

The WP_HTTP library in previous releases has been primarily maintained by myself
and [@dd32](https://profiles.wordpress.org/dd32/), with my support time split between
the two libraries. Both libraries are very similar, and code has been shared between
them (when licensing permitted) in the past. Requests follows the same development
philosophies as WordPress: developing for the masses with broad PHPPHP The web scripting
language in which WordPress is primarily architected. WordPress requires PHP 7.4
or higher support, and maintaining backwards compatibility.

By switching to Requests, a library without any WordPress-specific dependencies,
WordPress benefits from input from the wider PHP ecosystem and community

Requests also has a huge number of unit tests, with [test coverage at 92%](https://codecov.io/github/rmccue/Requests?branch=master)
of the codebase and increasing. It’s also [used by other projects via the Composer ecosystem](https://packagist.org/packages/rmccue/requests/dependents),
including wp-cliWP-CLI WP-CLI is the Command Line Interface for WordPress, used 
to do administrative and development tasks in a programmatic way. The project page
is [http://wp-cli.org/](http://wp-cli.org/) [https://make.wordpress.org/cli/](https://make.wordpress.org/cli/)’
s HTTP functionality.

### What has changed?

From your perspective as a developer, nothing should have changed visibly. You can
and should continue to use WP’s HTTP functions the way you always have.

(Note: For the 4.6 development cycle and betaBeta A pre-release of software that
is given out to a large group of users to trial under real conditions. Beta versions
have gone through alpha testing in-house and are generally fairly close in look,
feel and function to the final product; however, design changes often occur as part
of the process. 1, the HTTP functions returned an array-like object. Many plugins
and themes in the real world are using direct `is_array()` checks, so it was decided
to pull this functionality back a bit to be safe, see [#37097](https://core.trac.wordpress.org/ticket/37097).)

Some new functionality has been introduced. In particular, the array returned from`
wp_remote_request()` now includes a new `http_response` value, which contains a `
WP_HTTP_Response` object (technically, `WP_HTTP_Requests_Response`). This shares
functionality with `WP_REST_Response` objects introduced in WordPress 4.4, allowing
common functionality to be developed for both APIs. In future releases, WordPress
may introduce new `WP_HTTP_Request` objects as well, allowing common middleware 
to be used across both APIs.

In addition, all of Requests’ features are now available in WordPress. This includes
things like better HTTP standard support, case-insensitive headers, parallel HTTP
requests, support for Internationalized Domain Names (like `böcean901.ch`), and 
many other internal improvements.

Some new features are only available when using `Requests::request()` directly (
such as parallel requests), however, these will be introduced into new WordPress-
specific APIs in future releases ([#37459](https://core.trac.wordpress.org/ticket/37459)).
This release is focussing on switching internal implementation and remaining stable.

For more background on the change, see [#33055](https://core.trac.wordpress.org/ticket/33055).

[#4-6](https://make.wordpress.org/core/tag/4-6/), [#dev-notes](https://make.wordpress.org/core/tag/dev-notes/),
[#http-api](https://make.wordpress.org/core/tag/http-api/)