Index: src/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php	(revision 39184)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php	(working copy)
@@ -148,6 +148,7 @@
 	public function prepare_item_for_response( $post_type, $request ) {
 		$taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) );
 		$taxonomies = wp_list_pluck( $taxonomies, 'name' );
+		$base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name;
 		$data = array(
 			'capabilities' => $post_type->cap,
 			'description'  => $post_type->description,
@@ -156,6 +157,7 @@
 			'name'         => $post_type->label,
 			'slug'         => $post_type->name,
 			'taxonomies'   => array_values( $taxonomies ),
+			'rest_base'    => $base,
 		);
 		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
 		$data    = $this->add_additional_fields_to_object( $data, $request );
@@ -164,8 +166,6 @@
 		// Wrap the data in a response object.
 		$response = rest_ensure_response( $data );
 
-		$base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name;
-
 		$response->add_links( array(
 			'collection' => array(
 				'href'   => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
@@ -251,6 +251,12 @@
 					'context'      => array( 'view', 'edit' ),
 					'readonly'     => true,
 				),
+				'rest_base'            => array(
+					'description'  => __( 'REST base route for the resource.' ),
+					'type'         => 'string',
+					'context'      => array( 'view', 'edit', 'embed' ),
+					'readonly'     => true,
+				),
 			),
 		);
 		return $this->add_additional_fields_schema( $schema );
Index: src/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php	(revision 39184)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php	(working copy)
@@ -177,7 +177,7 @@
 	 * @return WP_REST_Response Response object.
 	 */
 	public function prepare_item_for_response( $taxonomy, $request ) {
-
+		$base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name;
 		$data = array(
 			'name'         => $taxonomy->label,
 			'slug'         => $taxonomy->name,
@@ -187,6 +187,7 @@
 			'types'        => $taxonomy->object_type,
 			'show_cloud'   => $taxonomy->show_tagcloud,
 			'hierarchical' => $taxonomy->hierarchical,
+			'rest_base'    => $base,
 		);
 
 		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
@@ -196,7 +197,6 @@
 		// Wrap the data in a response object.
 		$response = rest_ensure_response( $data );
 
-		$base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name;
 		$response->add_links( array(
 			'collection'                => array(
 				'href'                  => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
@@ -285,6 +285,12 @@
 					'context'      => array( 'view', 'edit' ),
 					'readonly'     => true,
 				),
+				'rest_base'            => array(
+					'description'  => __( 'REST base route for the resource.' ),
+					'type'         => 'string',
+					'context'      => array( 'view', 'edit', 'embed' ),
+					'readonly'     => true,
+				),
 			),
 		);
 		return $this->add_additional_fields_schema( $schema );
Index: tests/phpunit/tests/rest-api/rest-post-types-controller.php
===================================================================
--- tests/phpunit/tests/rest-api/rest-post-types-controller.php	(revision 39184)
+++ tests/phpunit/tests/rest-api/rest-post-types-controller.php	(working copy)
@@ -119,7 +119,7 @@
 		$response = $this->server->dispatch( $request );
 		$data = $response->get_data();
 		$properties = $data['schema']['properties'];
-		$this->assertEquals( 7, count( $properties ) );
+		$this->assertEquals( 8, count( $properties ) );
 		$this->assertArrayHasKey( 'capabilities', $properties );
 		$this->assertArrayHasKey( 'description', $properties );
 		$this->assertArrayHasKey( 'hierarchical', $properties );
@@ -127,6 +127,7 @@
 		$this->assertArrayHasKey( 'name', $properties );
 		$this->assertArrayHasKey( 'slug', $properties );
 		$this->assertArrayHasKey( 'taxonomies', $properties );
+		$this->assertArrayHasKey( 'rest_base', $properties );
 	}
 
 	public function test_get_additional_field_registration() {
@@ -170,6 +171,7 @@
 		$this->assertEquals( $post_type_obj->name, $data['slug'] );
 		$this->assertEquals( $post_type_obj->description, $data['description'] );
 		$this->assertEquals( $post_type_obj->hierarchical, $data['hierarchical'] );
+		$this->assertEquals( $post_type_obj->rest_base, $data['rest_base'] );
 
 		$links = test_rest_expand_compact_links( $links );
 		$this->assertEquals( rest_url( 'wp/v2/types' ), $links['collection'][0]['href'] );
Index: tests/phpunit/tests/rest-api/rest-taxonomies-controller.php
===================================================================
--- tests/phpunit/tests/rest-api/rest-taxonomies-controller.php	(revision 39184)
+++ tests/phpunit/tests/rest-api/rest-taxonomies-controller.php	(working copy)
@@ -45,6 +45,7 @@
 		$this->assertEquals( 'Tags', $data['post_tag']['name'] );
 		$this->assertEquals( 'post_tag', $data['post_tag']['slug'] );
 		$this->assertEquals( false, $data['post_tag']['hierarchical'] );
+		$this->assertEquals( 'tags', $data['post_tag']['rest_base'] );
 	}
 
 	public function test_get_items_invalid_permission_for_context() {
@@ -134,7 +135,7 @@
 		$response = $this->server->dispatch( $request );
 		$data = $response->get_data();
 		$properties = $data['schema']['properties'];
-		$this->assertEquals( 8, count( $properties ) );
+		$this->assertEquals( 9, count( $properties ) );
 		$this->assertArrayHasKey( 'capabilities', $properties );
 		$this->assertArrayHasKey( 'description', $properties );
 		$this->assertArrayHasKey( 'hierarchical', $properties );
@@ -143,6 +144,7 @@
 		$this->assertArrayHasKey( 'slug', $properties );
 		$this->assertArrayHasKey( 'show_cloud', $properties );
 		$this->assertArrayHasKey( 'types', $properties );
+		$this->assertArrayHasKey( 'rest_base', $properties );
 	}
 
 	public function tearDown() {
@@ -168,6 +170,7 @@
 		$this->assertEquals( $tax_obj->name, $data['slug'] );
 		$this->assertEquals( $tax_obj->description, $data['description'] );
 		$this->assertEquals( $tax_obj->hierarchical, $data['hierarchical'] );
+		$this->assertEquals( $tax_obj->rest_base, $data['rest_base'] );
 		$this->assertEquals( rest_url( 'wp/v2/taxonomies' ), $links['collection'][0]['href'] );
 		$this->assertArrayHasKey( 'https://api.w.org/items', $links );
 		if ( 'edit' === $context ) {
