---
# System prepended metadata

title: Övningsprov

---

# Övningsprov: Express-API


### Förutsättningar
Du ska skapa ett API med Node JS, Express och SQLite. APIt ska hantera inlägg (posts) för en enkel blogg.

Du har en given databas i filen `database.db` med en tabell *posts* som har följande kolumner:

| Kolumn    | Typ     | Beskrivning                 |
| --------- | ------- | --------------------------- |
| id        | INTEGER | Primärnyckel, autoincrement |
| title     | TEXT    | Titel på inlägget           |
| content   | TEXT    | Inläggets innehåll          |
| published | INTEGER | 0 = utkast, 1 = publicerat  |

För referens har tabellen skapats med följande SQL-kod:
```sql
CREATE TABLE posts (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  content TEXT NOT NULL,
  published INTEGER NOT NULL DEFAULT 0
);
```

### Uppgift

Skapa ett api skrivit i Node JS med hjälp av express som har följande *endpoints*. Alla endpoints ska skicka tillbaka ett svar i json-format. Skriv också kommentarer till din kod.


#### 1. Hämta inlägg

`GET /posts` - skickar tillbaka alla inlägg som en lista i json-format.

Exempel på svar:

```json
[
  {
    "id": 1,
    "title": "Första inlägget",
    "content": "Hej bloggen",
    "published": 1
  }
]
```


#### 2. Skapa nytt inlägg

`POST /posts` - skapar ett nytt inlägg utifrån bodyn av requesten.

Exempel på request body:

```json
{
  "title": "Nytt inlägg",
  "content": "Detta är innehållet"
}
```

#### 3. Publicera/avpublicera befintligt inlägg

`PUT /posts/:id` - ändrar publiceringsstatus på det inlägg med motsvarande id som i parametern. Nya statusen anges i querysträngen under variabeln *published*.

Exempel på URL `/posts/3?published=1`

### Extra krav

* lägg till att varje svar innehåller en relevant statuskod
* lägg till en endpoint för att ta bort inlägg
* lägg till en endpoint som skickar tillbaka endast ett inlägg

