WC_API_Server::serve_request()publicWC 2.1

Handle serving an API request

Matches the current server URI to a route and runs the first matching callback then outputs a JSON representation of the returned value.

Method of the class: WC_API_Server{}

Return

null. Nothing (null).

Usage

$WC_API_Server = new WC_API_Server();
$WC_API_Server->serve_request();

Changelog

Since 2.1 Introduced.

WC_API_Server::serve_request() code WC 8.7.0

public function serve_request() {

	do_action( 'woocommerce_api_server_before_serve', $this );

	$this->header( 'Content-Type', $this->handler->get_content_type(), true );

	// the API is enabled by default
	if ( ! apply_filters( 'woocommerce_api_enabled', true, $this ) || ( 'no' === get_option( 'woocommerce_api_enabled' ) ) ) {

		$this->send_status( 404 );

		echo $this->handler->generate_response( array( 'errors' => array( 'code' => 'woocommerce_api_disabled', 'message' => 'The WooCommerce API is disabled on this site' ) ) );

		return;
	}

	$result = $this->check_authentication();

	// if authorization check was successful, dispatch the request
	if ( ! is_wp_error( $result ) ) {
		$result = $this->dispatch();
	}

	// handle any dispatch errors
	if ( is_wp_error( $result ) ) {
		$data = $result->get_error_data();
		if ( is_array( $data ) && isset( $data['status'] ) ) {
			$this->send_status( $data['status'] );
		}

		$result = $this->error_to_array( $result );
	}

	// This is a filter rather than an action, since this is designed to be
	// re-entrant if needed
	$served = apply_filters( 'woocommerce_api_serve_request', false, $result, $this );

	if ( ! $served ) {

		if ( 'HEAD' === $this->method ) {
			return;
		}

		echo $this->handler->generate_response( $result );
	}
}