Perbedaan PATCH dan PUT dan HTTP method lainnya di API HTTP
Memahami penggunaan method atau verb di protokol HTTP, sebuah penentuan kerja dalam HTTP yang akan menentukan jenis aksi yang akan dilakukan oleh request yang dilakukan. Terdapat beberapa jenis method yang didukung di HTTP:
GET
: Digunakan untuk meminta resource ke sebuah server.- Tidak cocok digunakan untuk sebuah aplikasi login jika dijalankan di browser akan tetapi jika digunakan di API tidak jadi masalah karena tidak terlihat oleh user atau client.
- Implementasi metode get yaitu contohnya untuk meminta respons berbentuk JSON, meminta sebuah file seperti gambar atau document, dan sebagai query URL untuk memfilter data.
- Metode GET pada http request bertujuan untuk menyimpan data di query URL dan tidak memiliki bodi data yang dikirimkan.
- get merupakan metode pada http yang digunakan untuk pembacaan data dari client ke rest server
POST
: Digunakan untuk menyimpan resource ke sebuah server.- Biasanya digunakan untuk Login, mengirimkan data baru seperti data type JSON
- digunakan juga untuk mengirimkan sebuah FILE atau meng upload data ke server
PUT
: Digunakan untuk melakukan update resource ke sebuah server.- dengan PUT method bisa mengirimkan secara keseluruhan data atau replace total
PATCH
: Digunakan untuk melakukan hanya sebagai resource ke sebuah server.- melakukan update secara parsial atau hanya separuh data data yang diinginkan untuk di update
DELETE
: Digunakan untuk melakukan menghapus resource ke sebuah server.- metode ini jarang digunakan jika untuk membuat sebuah aplikasi tanpa Front-end dan Back-end secara SPA (Single Page Application), paling sering untuk membuat sebuah API untuk dikonsumsi Front-end, jika diimplementasikan Form HTML biasa hanya bisa mengirimkan action GET dan POST.
PUT dan PATCH paling banyak digunakan untuk melakukan hal yang sama yaitu melakukan update. di antara dua jenis itu memiliki perbedaan secara technical PUT
bekerja dengan cara menimpa replace resource dengan resource yang baru.
sedangkan method PATCH
digunakan untuk meng-update sebagian field yang diminta yang ada dari resource.
contoh Request PUT dengan data nama dan hobi, maka jika ingin melakukan update salah satu data misal name
maka data yang harus dikirimkan harus semuanya
kirim data Update dengan PUT :
{
"name": "Sigit N",
"hoby": "Drawing"
}
sedangkan untuk mengirimkan dan melakukan Update data hanya name
maka field name saja yang dikirimkan, seperti berikut.
PATCH Request yang dikirimkan:
{
"name": "Sigit Foo Bar"
}
Kegunaan HTTP method seperti GET, POST, PATCH, DELETE, dan PUT method adalah proses meminta sebuah perintah ke server atau sumber seperti ke server yang merupakan perangkat pusat yang biasanya digunakan untuk API RESTful , contohnya seperti membangun API menggunakan Express JS di NodeJS atau menggunakan Laravel di PHP,
Untuk membangun RESTful API, Penggunaan verb method digunakan komputer untuk saling berkomunikasi menggunakan layanan protokol HTTP, Kegunaan RESTful API juga bisa disebut untuk saling bertukar data antar perangkat secara mudah karena RESTful API tidak hanya digunakan oleh satu bahasa pemrograman saja.
jika masih kurang dirasa jelas : berikut ini contoh penggunaan CURL untuk method GET, POST, PATCH, DELETE:
- curl
GET
:
curl --location --request GET 'http://127.0.0.1:8000/api/task-shcedule/' --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.'
- curl
POST
:
curl --location --request POST 'http://127.0.0.1:8000/api/task-shcedule/11' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Makan Obat Biru (data baru POST)",
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"time": "08:00",
"description": "makan obat Sore",
"user_id": "1"
}'
- curl
PACTH
:
curl --location --request PATCH 'http://127.0.0.1:8000/api/task-shcedule/11' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Makan Obat Kuning",
"description": "makan obat Sore"
}'
- curl
PUT
:
curl --location --request PUT 'http://127.0.0.1:8000/api/task-shcedule/11' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Makan Obat Batuk"
}'
- curl
DELETE
:
curl --location --request DELETE 'http://127.0.0.1:8000/api/task-shcedule/1' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.'
Contoh Syntax Di Laravel
Syntax routing di Laravel menggunakan HTTP Verb dan Closure di file app/Http/routes.php:
.
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TaskScheduleController;
Route::name('taskSchedule')->get('task-shcedule', [TaskScheduleController::class, 'index'])->middleware('auth:api');
Route::name('taskSchedule.create')->post('task-shcedule', [TaskScheduleController::class, 'create'])->middleware('auth:api');
Route::name('taskSchedule.update')->put('task-shcedule', [TaskScheduleController::class, 'updatee'])->middleware('auth:api');
Route::name('taskSchedule.patch')->patch('task-shcedule', [TaskScheduleController::class, 'patch'])->middleware('auth:api');
Route::name('taskSchedule.delete')->delete('task-shcedule', [TaskScheduleController::class, 'destroy'])->middleware('auth:api');