diff --git a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
index 34ff93594e2fafb7e191935d7a48968a946e90c1..2fd7689ad93685ca2639b65cf71ebbb71b551d8b 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
@@ -7,6 +7,7 @@ import java.util.logging.Logger;
 import javax.ws.rs.ApplicationPath;
 import fr.ulille.iut.pizzaland.beans.Ingredient;
 import fr.ulille.iut.pizzaland.dao.IngredientDao;
+import fr.ulille.iut.pizzaland.dao.PizzaDao;
 
 import java.io.FileReader;
 import java.io.IOException;
@@ -38,6 +39,10 @@ public class ApiV1 extends ResourceConfig {
             for ( Ingredient ingredient: ingredients) {
                  ingredientDao.insert(ingredient.getName());              
             }
+            
+            PizzaDao pizzaDao = BDDFactory.buildDao(PizzaDao.class);
+            
+            
     	  } catch ( Exception ex ) {
     		throw new IllegalStateException(ex);
           }
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
index 626ba350df63893adc31034d49c9a2eb8597777e..2eafe9c662ae186bbbc841620d6dfb357366e0ed 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
@@ -1,14 +1,24 @@
 package fr.ulille.iut.pizzaland.dao;
 
+import java.util.List;
+
+import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
+import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
+import org.jdbi.v3.sqlobject.statement.SqlQuery;
 import org.jdbi.v3.sqlobject.statement.SqlUpdate;
 import org.jdbi.v3.sqlobject.transaction.Transaction;
 
+import fr.ulille.iut.pizzaland.beans.Pizza;
+
 public interface PizzaDao {
 
-	@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas ....")
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL")
 	void createPizzaTable();
 
-	@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation .....")
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation(pizza Integer," 
+				+"ingredient INTEGER,"
+				+ "PRIMARY KEY(pizza, ingredient),"+"FOREIGN KEY(pizza) REFERENCES Pizzas(id),"
+				+"FOREIGN KEY(ingredient) REFERENCES ingredient(id))")
 	void createAssociationTable();
 
 	@Transaction
@@ -17,4 +27,32 @@ public interface PizzaDao {
 		createPizzaTable();
 
 	}
+
+	@SqlUpdate("DROP TABLE IF EXISTS Pizzas")
+	void dropTablePizza();
+
+	@SqlUpdate("DROP TABLE IF EXISTS pizzaIngredientsAssociation")
+	void dropTableAssociations();
+
+	@SqlQuery("SELECT * FROM Pizzas")
+	@RegisterBeanMapper(Pizza.class)
+	List<Pizza> getAll();
+	
+	
+	@SqlQuery("SELECT * FROM Pizzas WHERE id = :id")
+	@RegisterBeanMapper(Pizza.class)
+	Pizza findById(long id);
+	
+	@SqlQuery("SELECT * FROM Pizzas WHERE name = :name")
+	@RegisterBeanMapper(Pizza.class)
+	Pizza findByName(String name);
+	
+	@SqlUpdate("INSERT INTO Pizzas (name) VALUES(:name)")
+	@GetGeneratedKeys
+	long insert(String name);
+	
+	@SqlUpdate("DELETE FROM Pizzas WHERE id = :id")
+	void remove(long id);
+	
+	
 }
\ No newline at end of file
diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..891a3c8d84d2b28eba08a3347e7a3fd069d012ba
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
@@ -0,0 +1,144 @@
+package fr.ulille.iut.pizzaland.resources;
+
+import java.net.URI;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.logging.Logger;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+
+import fr.ulille.iut.pizzaland.beans.Ingredient;
+import fr.ulille.iut.pizzaland.beans.Pizza;
+import fr.ulille.iut.pizzaland.dto.IngredientDto;
+import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
+import fr.ulille.iut.pizzaland.dto.PizzaDto;
+import fr.ulille.iut.pizzaland.BDDFactory;
+import fr.ulille.iut.pizzaland.dao.IngredientDao;
+import fr.ulille.iut.pizzaland.dao.PizzaDao;
+
+import java.util.stream.Collectors;
+import javax.ws.rs.POST;
+import fr.ulille.iut.pizzaland.dto.IngredientCreateDto;
+import javax.ws.rs.WebApplicationException;
+
+@Path("/pizzas")
+public class PizzaResource {
+	final static Logger LOGGER = Logger.getLogger(PizzaResource.class.getName());
+	@Context
+	public UriInfo uriInfo;
+	
+	private PizzaDao pizzas;
+	
+
+	public PizzaResource() {
+		pizzas = BDDFactory.buildDao(PizzaDao.class);
+		pizzas.createPizzaTable();
+	}
+
+	@GET
+	public List<PizzaDto> getAll() {
+		LOGGER.info("PizzaResource:getAll");
+
+		List<PizzaDto> l = pizzas.getAll().stream().map(Pizza::toDto).collect(Collectors.toList());
+		return l;
+	}
+
+	@GET
+	@Path("{id}")
+	public PizzaDto getOnePizza(@PathParam("id") long id) {
+		LOGGER.info("getOnePizza(" + id + ")");
+		try {
+			Pizza pizza = pizzas.findById(id);
+			return Pizza.toDto(pizza);
+		} catch (Exception e) {
+			// Cette exception générera une réponse avec une erreur 404
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+	}
+
+	@POST
+	public Response createPizza(PizzaCreateDto pizzaCreateDto) {
+		Pizza existing = pizzas.findByName(pizzaCreateDto.getName());
+		if (existing != null) {
+			throw new WebApplicationException(Response.Status.CONFLICT);
+		}
+
+		try {
+			Pizza pizza = Pizza.fromPizzaCreateDto(pizzaCreateDto);
+			long id = pizzas.insert(pizza.getName());
+			pizza.setId(id);
+			PizzaDto pizzaDto = Pizza.toDto(pizza);
+
+			URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
+
+			return Response.created(uri).entity(pizzaDto).build();
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
+		}
+	}
+	
+	@DELETE
+	@Path("{id}")
+	public Response deletePizza(@PathParam("id") long id) {
+		if ( pizzas.findById(id) == null ) {
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+
+	    pizzas.remove(id);
+
+	    return Response.status(Response.Status.ACCEPTED).build();
+	}
+
+	@GET
+	@Path("{id}/name")
+	public String getPizzaName(@PathParam("id") long id) {
+	    Pizza pizza= pizzas.findById(id);
+		if ( pizza == null ) {
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+	        
+		return pizza.getName();
+	}
+
+	@POST
+	@Consumes("application/x-www-form-urlencoded")
+	public Response createPizza(@FormParam("name") String name) {
+	    Pizza existing = pizzas.findByName(name);
+	    if ( existing != null ) {
+	        throw new WebApplicationException(Response.Status.CONFLICT);
+	    }
+	    
+	    try {
+	        Pizza pizza = new Pizza();
+	        pizza.setName(name);
+	        
+	        long id = pizzas.insert(pizza.getName());
+	        pizza.setId(id);
+	        PizzaDto pizzaDto = Pizza.toDto(pizza);
+
+	        URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
+
+	        return Response.created(uri).entity(pizzaDto).build();
+	    }
+	    catch ( Exception e ) {
+	        e.printStackTrace();
+	        throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
+	    }
+	}
+
+	
+	
+
+}