161 lines
2.8 KiB
Markdown
161 lines
2.8 KiB
Markdown
# Example of CRUD in Django with REST FRAMEWORK
|
|
|
|
- Live Demo.
|
|
- Endpoint Get List Books.
|
|
- Endpoint Get Details Book.
|
|
- Endpoint Add Book.
|
|
- Endpoint Update Book.
|
|
- Endpoint Delete Book.
|
|
- All Endpoints contain your test.
|
|
|
|
## Live Demo
|
|
|
|
### Get list
|
|
|
|
``` shell
|
|
curl https://example-of-crud-in-django-jrf.herokuapp.com/api/book/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"title": "Things Fall Apart",
|
|
"country": "Nigeria",
|
|
"year": 1958,
|
|
"author": "Chinua Achebe",
|
|
"created_at": "2021-07-15T14:27:14.927177",
|
|
"updated_at": "2021-07-15T14:27:14.927213"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Fairy tales",
|
|
"country": "Denmark",
|
|
"year": 1836,
|
|
"author": "Hans Christian Andersen",
|
|
"created_at": "2021-07-15T14:27:14.930223",
|
|
"updated_at": "2021-07-15T14:27:14.930233"
|
|
},
|
|
...
|
|
```
|
|
|
|
### Get Detail
|
|
|
|
``` shell
|
|
curl https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
{
|
|
"id": 1,
|
|
"title": "Things Fall Apart",
|
|
"country": "Nigeria",
|
|
"year": 1958,
|
|
"author": "Chinua Achebe",
|
|
"created_at": "2021-07-15T14:27:14.927177",
|
|
"updated_at": "2021-07-15T14:27:14.927213"
|
|
}
|
|
```
|
|
|
|
### Create
|
|
|
|
``` shell
|
|
curl -XPOST -H "Content-type: application/json" -d '{"title": "The foundation", "country": "eeuu", "author": "Isaac Asimov", "year": "1951"}' https://example-of-crud-in-django-jrf.herokuapp.com/api/book/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
{
|
|
"id": 101,
|
|
"title": "The foundation",
|
|
"country": "eeuu",
|
|
"year": 1951,
|
|
"author": "Isaac Asimov",
|
|
"created_at": "2021-07-15T14:47:25.262738",
|
|
"updated_at": "2021-07-15T14:47:25.262753"
|
|
}
|
|
```
|
|
|
|
### Update
|
|
|
|
``` shell
|
|
curl -XPUT -H "Content-type: application/json" -d '{"title": "The End of Eternity", "country": "eeuu", "author": "Isaac Asimov", "year": "1955"}' https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
{
|
|
"id": 1,
|
|
"title": "The End of Eternity",
|
|
"country": "eeuu",
|
|
"year": 1955,
|
|
"author": "Isaac Asimov",
|
|
"created_at": "2021-07-15T14:47:25.262738",
|
|
"updated_at": "2021-07-15T14:50:47.697224"
|
|
}
|
|
```
|
|
|
|
### Delete
|
|
|
|
``` shell
|
|
curl -XDELETE https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
{
|
|
"id": null,
|
|
"title": "The End of Eternity",
|
|
"country": "eeuu",
|
|
"year": 1955,
|
|
"author": "Isaac Asimov",
|
|
"created_at": "2021-07-15T14:47:25.262738",
|
|
"updated_at": "2021-07-15T14:50:47.697224"
|
|
}
|
|
```
|
|
|
|
### Ping
|
|
|
|
``` shell
|
|
curl https://example-of-crud-in-django-jrf.herokuapp.com/ping/
|
|
```
|
|
|
|
Output
|
|
|
|
``` json
|
|
{"ping": "pong!"}
|
|
```
|
|
|
|
## Install
|
|
|
|
``` bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip3 install -r requirements.txt
|
|
python3 manage.py migrate
|
|
```
|
|
|
|
## Run
|
|
|
|
``` bash
|
|
python3 manage.py runserver
|
|
```
|
|
|
|
## Fake data
|
|
|
|
``` bash
|
|
python3 manage.py runscript create_books
|
|
```
|
|
|
|
## Test
|
|
|
|
``` bash
|
|
pytest
|
|
``` |