2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Getting Started with React
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This integration guide is following the [Getting started guide ](../getting-started/quick-start.html ). We assume that you have completed [Step 8 ](../getting-started/quick-start.html#_8-consume-the-content-type-s-api ) and therefore can consume the API by browsing this [url ](http://localhost:1337/restaurants ).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If you haven't gone through the getting started guide, the way you request a Strapi API with [React ](https://reactjs.org/ ) remains the same except that you will not fetch the same content.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Create a React app
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Create a basic React application using [create-react-app ](https://reactjs.org/docs/create-a-new-react-app.html ).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab yarn
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								yarn create react-app react-app
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab npx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								npx create-react-app react-app
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Use an HTTP client
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Many HTTP clients are available but in this documentation we'll use [Axios ](https://github.com/axios/axios ) and [Fetch ](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API ).
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								yarn add axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								No installation needed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### GET Request your collection type
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Execute a `GET`  request on the `restaurant`  Collection Type in order to fetch all your restaurants.
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Be sure that you activated the `find`  permission for the `restaurant`  Collection Type
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import axios from 'axios';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								axios.get('http://localhost:1337/restaurants').then(response => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  console.log(response);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								fetch('http://localhost:1337/restaurants', {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  method: 'GET',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  headers: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'Content-Type': 'application/json',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								})
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(response => response.json())
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  .then(data => console.log(data));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Response_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```json
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    "id": 1,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "name": "Biscotte Restaurant",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "description": "Welcome to Biscotte restaurant! Restaurant Biscotte offers a cuisine based on fresh, quality products, often local, organic when possible, and always produced by passionate producers.",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "created_by": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "id": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "firstname": "Paul",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "lastname": "Bocuse",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "username": null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "updated_by": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "id": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "firstname": "Paul",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "lastname": "Bocuse",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "username": null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "created_at": "2020-07-31T11:37:16.964Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "updated_at": "2020-07-31T11:37:16.975Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "categories": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "id": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "name": "French Food",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "created_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "updated_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "created_at": "2020-07-31T11:36:23.164Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "updated_at": "2020-07-31T11:36:23.172Z"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Example
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`./src/App.js`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import React from 'react';
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import axios from 'axios';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class App extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // State of your application
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    restaurants: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    error: null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Fetch your restaurants immediately after the component is mounted
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  componentDidMount = async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const response = await axios.get('http://localhost:1337/restaurants');
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this.setState({ restaurants: response.data });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  render() {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const { error, restaurant } = this.state;
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Print errors if any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if (error) {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return < div > An error occured: {error.message}< / div > ;
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  className = "App" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < ul > 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          {this.state.restaurants.map(restaurant => (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < li  key = {restaurant.id} > {restaurant.name}< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ))}
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        < / ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export default App;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`./src/App.js`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import React from 'react';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class App extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // State of your application
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    restaurants: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    error: null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Fetch your restaurants immediately after the component is mounted
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  componentDidMount = async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Parses the JSON returned by a network request
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const parseJSON = resp => (resp.json ? resp.json() : resp);
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Checks if a network request came back fine, and throws an error if not
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const checkStatus = resp => {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      if (resp.status >= 200 & &  resp.status <  300 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return resp;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return parseJSON(resp).then(resp => {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        throw resp;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const headers = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'Content-Type': 'application/json',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const restaurants = await fetch('http://localhost:1337/restaurants', {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        method: 'GET',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        headers: headers,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      })
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        .then(checkStatus)
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        .then(parseJSON);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this.setState({ restaurants });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  render() {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const { error, restaurant } = this.state;
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Print errors if any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if (error) {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return < div > An error occured: {error.message}< / div > ;
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  className = "App" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < ul > 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          {this.state.restaurants.map(restaurant => (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < li  key = {restaurant.id} > {restaurant.name}< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ))}
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        < / ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export default App;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### POST Request your collection type
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Execute a `POST`  request on the `restaurant`  Collection Type in order to create a restaurant.
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Be sure that you activated the `create`  permission for the `restaurant`  Collection Type and the `find`  permission fot the `category`  Collection type.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								In this example a `japanese`  category has been created which has the id: 3.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import axios from 'axios';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .post('http://localhost:1337/restaurants', {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    name: 'Dolemon Sushi',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    description: 'Unmissable Japanese Sushi restaurant. The cheese and salmon makis are delicious',
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    categories: [3],
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  })
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(response => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log(response);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fetch('http://localhost:1337/restaurants', {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  method: 'POST',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  headers: {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'Content-Type': 'application/json',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  body: JSON.stringify({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    name: 'Dolemon Sushi',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    description: 'Unmissable Japanese Sushi restaurant. The cheese and salmon makis are delicious',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    categories: [3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								})
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(response => response.json())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(data => console.log(data));
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Response_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```json
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  "id": 2,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "name": "Dolemon Sushi",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "description": "Unmissable Japanese Sushi restaurant. The cheese and salmon makis are delicious",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "created_by": null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "updated_by": null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "created_at": "2020-08-04T09:57:11.669Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "updated_at": "2020-08-04T09:57:11.669Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "categories": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      "id": 3,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "name": "Japanese",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "created_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "updated_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "created_at": "2020-07-31T11:36:23.164Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "updated_at": "2020-07-31T11:36:23.172Z"
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ]
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Example
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`./src/App.js`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import React from 'react';
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import axios from 'axios';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class App extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  constructor(props) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    super(props);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // State of your application
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this.state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      modifiedData: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        name: '',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description: '',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        categories: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      allCategories: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      error: null,
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Fetch your categories immediately after the component is mounted
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  componentDidMount = async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const response = await axios.get('http://localhost:1337/categories');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this.setState({ allCategories: response.data });
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  handleInputChange = ({ target: { name, value } }) => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this.setState(prev => ({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ...prev,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      modifiedData: {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ...prev.modifiedData,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        [name]: value,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  handleSubmit = async e => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    e.preventDefault();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const response = await axios.post(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'http://localhost:1337/restaurants',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this.state.modifiedData
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      );
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      console.log(response);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  renderCheckbox = category => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      modifiedData: { categories },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } = this.state;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const isChecked = categories.includes(category.id);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const handleChange = () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if (!categories.includes(category.id)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this.handleInputChange({
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          target: { name: 'categories', value: categories.concat(category.id) },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this.handleInputChange({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            name: 'categories',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            value: categories.filter(v => v !== category.id),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  key = {category.id} > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < label  htmlFor = {category.id} > {category.name}< / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          type="checkbox"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          checked={isChecked}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          onChange={handleChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name="categories"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          id={category.id}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  render() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const { error, allCategories, modifiedData } = this.state;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Print errors if any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if (error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return < div > An error occured: {error.message}< / div > ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  className = "App" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < form  onSubmit = {this.handleSubmit} > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < h3 > Restaurants< / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Name:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              type="text"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              name="name"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onChange={this.handleInputChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              value={modifiedData.name}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Description:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              type="text"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              name="description"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onChange={this.handleInputChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              value={modifiedData.description}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < b > Select categories< / b > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            {allCategories.map(this.renderCheckbox)}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button  type = "submit" > Submit< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / form > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export default App;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`./src/App.js`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import React from 'react';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Parses the JSON returned by a network request
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const parseJSON = resp => (resp.json ? resp.json() : resp);
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Checks if a network request came back fine, and throws an error if not
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const checkStatus = resp => {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if (resp.status >= 200 & &  resp.status <  300 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return resp;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return parseJSON(resp).then(resp => {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    throw resp;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const headers = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  'Content-Type': 'application/json',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class App extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  constructor(props) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    super(props);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this.state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      modifiedData: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        name: '',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description: '',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        categories: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      allCategories: [],
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      error: null,
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  componentDidMount = async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const allCategories = await fetch('http://localhost:1337/categories', {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        method: 'GET',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        headers: headers,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      })
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        .then(checkStatus)
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        .then(parseJSON);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this.setState({ allCategories });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  handleInputChange = ({ target: { name, value } }) => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this.setState(prev => ({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ...prev,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      modifiedData: {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ...prev.modifiedData,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        [name]: value,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  handleSubmit = async e => {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    e.preventDefault();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      await fetch('http://localhost:1337/restaurants', {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        method: 'POST',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        headers: headers,
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        body: JSON.stringify(this.state.modifiedData),
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      })
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        .then(checkStatus)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        .then(parseJSON);
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } catch (error) {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this.setState({ error });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  renderCheckbox = category => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      modifiedData: { categories },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } = this.state;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const isChecked = categories.includes(category.id);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const handleChange = () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if (!categories.includes(category.id)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this.handleInputChange({
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          target: { name: 'categories', value: categories.concat(category.id) },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this.handleInputChange({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            name: 'categories',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            value: categories.filter(v => v !== category.id),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          },
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  key = {category.id} > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < label  htmlFor = {category.id} > {category.name}< / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          type="checkbox"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          checked={isChecked}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          onChange={handleChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name="categories"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          id={category.id}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  render() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const { error, allCategories, modifiedData } = this.state;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Print error if any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if (error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return < div > An error occured: {error.message}< / div > ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  className = "App" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < form  onSubmit = {this.handleSubmit} > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < h3 > Restaurants< / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Name:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              type="text"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              name="name"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onChange={this.handleInputChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              value={modifiedData.name}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Description:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < input 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              type="text"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              name="description"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onChange={this.handleInputChange}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              value={modifiedData.description}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / label > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < b > Select categories< / b > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            {allCategories.map(this.renderCheckbox)}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < br  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button  type = "submit" > Submit< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / form > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export default App;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### PUT Request your collection type
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Execute a `PUT`  request on the `restaurant`  Collection Type in order to update the category of a restaurant.
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Be sure that you activated the `put`  permission for the `restaurant`  Collection Type.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::: tabs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								We consider that the id of your restaurant is `2` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								and the id of your category is `2` .
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import axios from 'axios';
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								axios
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .put('http://localhost:1337/restaurants/2', {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    categories: [2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  })
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(response => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log(response);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::: tab fetch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Request_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fetch('http://localhost:1337/restaurants/2', {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  method: 'PUT',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  headers: {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'Content-Type': 'application/json',
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  body: JSON.stringify({
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    categories: [2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }),
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								})
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  .then(response => response.json())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .then(data => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log(data);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  });
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_Response_
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```json
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "id": 2,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "name": "Dolemon Sushi",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "description": "Unmissable Japanese Sushi restaurant. The cheese and salmon makis are delicious",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "created_by": null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "updated_by": null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "created_at": "2020-08-04T10:21:30.219Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "updated_at": "2020-08-04T10:21:30.219Z",
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  "categories": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "id": 2,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "name": "Brunch",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "created_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "updated_by": 1,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "created_at": "2020-08-04T10:24:26.901Z",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      "updated_at": "2020-08-04T10:24:26.911Z"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ]
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								::::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## Starter
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  [React Blog starter ](https://github.com/strapi/strapi-starter-react-blog ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-17 19:29:04 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								## Conclusion
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Here is how to request your Collection Types in Strapi using React. When you create a Collection Type or a Single Type you will have a certain number of REST API endpoints available to interact with.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-30 14:52:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								We just used the GET, POST and PUT methods here but you can [get one entry ](../content-api/api-endpoints.html#get-an-entry ), [get how much entry you have ](../content-api/api-endpoints.html#count-entries ) and [delete ](../content-api/api-endpoints.html#delete-an-entry ) an entry too. Learn more about [API Endpoints ](../content-api/api-endpoints.html#api-endpoints )/