Membuat REST API papan buletin minimum yang layak untuk tujuan pendidikan.
Mendapatkan daftar semua tag, postingan, dan pengguna
Cari dalam daftar
Pendaftaran pengguna
Pengguna terdaftar dapat:
Tambahkan postingan baru
Komentari postingan yang ada
Hapus dan edit postingan dan komentar Anda
PHP 8.1+
Laravel 10
Komposer
MySQL
POST
/api/v1/auth/register
DaftarNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
nama | diperlukan | rangkaian | Nama |
nama panggilan | diperlukan | rangkaian | Pengenal yang dapat dibaca manusia |
diperlukan | rangkaian | Alamat email | |
kata sandi | diperlukan | rangkaian | Kata sandi |
kata sandi_dikonfirmasi | diperlukan | rangkaian | Konfirmasi kata sandi |
201
CREATED
{ "access_token", "token_type": "Bearer" }
POST
/api/v1/auth/login
MasukNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
diperlukan | rangkaian | Alamat email | |
kata sandi | diperlukan | rangkaian | Kata sandi |
200
OK
{ "access_token", "token_type":"Bearer" }
POST
/api/v1/auth/logout
LogoutKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
204
NO CONTENT
GET
/api/v1/profile
Dapatkan profil pengguna yang diautentikasiKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/profile/posts
Dapatkan profil dan postingan pengguna yang diautentikasiKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah posting per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug", }, ... ], "comments_count" } ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/profile/comments
Dapatkan profil dan komentar dari pengguna yang diautentikasiKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah komentar per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users
Dapatkan semua penggunaNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
Q | opsional | rangkaian | Permintaan pencarian |
per_halaman | opsional | ke dalam | Jumlah pengguna per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/users/{nickname}
Dapatkan pengguna200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/users/{nickname}/posts
Dapatkan pengguna dan postingannyaNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah posting per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users/{nickname}/comments
Dapatkan pengguna dan komentarnyaNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah komentar per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/tags
Dapatkan semua tagNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
Q | opsional | rangkaian | Permintaan pencarian |
200
OK
{ "data": [ { "tag_id", "name", "slug", "post_count" }, ... ] }
GET
/api/v1/tags/{slug}
Dapatkan tag dan postingannyaNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah posting per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname" }, ], "links": {...}, "meta": {...}, "tag": { "tag_id", "name", "slug" } }
GET
/api/v1/posts
Dapatkan semua postinganNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
Q | opsional | rangkaian | Permintaan pencarian |
per_halaman | opsional | ke dalam | Jumlah posting per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "post_id, "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/posts/{id}
Dapatkan postingan dan komentarnyaNama | Jenis | Tipe data | Keterangan |
---|---|---|---|
per_halaman | opsional | ke dalam | Jumlah komentar per halaman |
halaman | opsional | ke dalam | Nomor halaman |
200
OK
{ "data": [ { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "post": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] } }
POST
/api/v1/posts
Tambahkan postingan baruKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
judul | opsional | rangkaian | Judul |
harga | opsional | mengambang | Harga |
keterangan | opsional | rangkaian | Keterangan |
tag[id] | opsional | susunan[int] | Array ID tag |
201
CREATED
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
PUT
/api/v1/posts/{id}
Edit postinganKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
judul | opsional | rangkaian | Judul |
harga | opsional | mengambang | Harga |
keterangan | opsional | rangkaian | Keterangan |
tag[id] | opsional | susunan[int] | Array ID tag |
200
OK
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
DELETE
/api/v1/posts/{id}
Menghapus postinganKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
204
NO CONTENT
POST
/api/v1/posts/{id}/comments
Tambahkan komentar baru ke postinganKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
tubuh | diperlukan | rangkaian | Teks komentar |
201
CREATED
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", }, }
PUT
/api/v1/comments/{id}
Edit komentarKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
Nama | Jenis | Tipe data | Keterangan |
---|---|---|---|
tubuh | diperlukan | rangkaian | Teks komentar |
200
OK
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", } }
DELETE
/api/v1/comments/{id}
Menghapus komentarKunci | Nilai |
---|---|
Otorisasi | Pembawa {token} |
204
NO CONTENT
Kloning repositori ini dan buka folder proyek Anda:
git clone https://github.com/AllaAverina/bulletin-board-APIcd bulletin-board-API
Instal dependensi:
instalasi komposer
Mulai MySQL, ubah parameter untuk menghubungkan ke database di file .env.example dan jalankan:
salin .env.contoh .env
Jalankan perintah untuk menjalankan migrasi:
migrasi tukang php
Atau jika Anda ingin mengisi database dengan data dummy:
tukang php bermigrasi --seed
Mulai server web:
pelayan tukang php
Buka di browser Anda, misalnya http://localhost:8000/api/v1/posts
Buat database baru untuk pengujian, ubah parameter untuk menyambungkannya di file .env.testing dan jalankan:
tes tukang php
Kloning repositori ini dan buka folder proyek Anda:
git clone https://github.com/AllaAverina/bulletin-board-APIcd bulletin-board-API
Instal dependensi:
menjalankan buruh pelabuhan --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php82-composer:terbaru instalasi komposer --ignore-platform-reqs
Buat file .env:
cp.env.docker.examlpe.env
Buat alias shell dan jalankan layar:
alias berlayar='[ -f berlayar ] && sh berlayar || sh vendor/bin/sail'sail up -d
Jalankan perintah untuk menjalankan migrasi:
tukang layar bermigrasi
Atau jika Anda ingin mengisi database dengan data dummy:
pengrajin layar bermigrasi --seed
Buka di browser, misalnya http://localhost/api/v1/posts
Untuk menghentikan penggunaan kontainer:
berhenti berlayar
Siapkan file .env.testing:
cp .env.docker.testing .env.testing
Jalankan tes:
tes tukang layar