Test API dengan Curl
Kali ini saya akan share cara test API dengan curl dan shell script.
Untuk API-nya, kita akan menggunakan API dari restfull-booker . Silahkan cek dokumentasinya sebelum mengikut tutorial ini.
Kita akan membuat tutorial ini seolah-olah seperti API “beneran”, untuk output dari curl akan kita buat “cantik” dengan menggunakan jq
-
Mendapatkan token untuk otentikasi
curl -s -X POST \ https://restful-booker.herokuapp.com/auth \ -H 'Content-Type: application/json' \ -d '{ "username" : "admin", "password" : "password123" }' | jq
Create Token
Untuk mendapatkan value dari token saja gunakan (ini bakal kita gunakan nanti di shell script)
curl -s -X POST \ https://restful-booker.herokuapp.com/auth \ -H 'Content-Type: application/json' \ -d '{ "username" : "admin", "password" : "password123" }' | jq -r '.token' #outpunya hanya d4aebae5dd25ebd
-
Kita buat booking ID
curl -s -X POST \ https://restful-booker.herokuapp.com/booking \ -H 'Content-Type: application/json' \ -d '{ "firstname" : "Anyong", "lastname" : "Haseo", "totalprice" : 111, "depositpaid" : true, "bookingdates" : { "checkin" : "2022-11-04", "checkout" : "2022-12-25" }, "additionalneeds" : "Breakfast" }'
Create Booking
Untuk mendapat booking id saja, gunakan
curl -s -X POST \ https://restful-booker.herokuapp.com/booking \ -H 'Content-Type: application/json' \ -d '{ "firstname" : "Anyong", "lastname" : "Haseo", "totalprice" : 111, "depositpaid" : true, "bookingdates" : { "checkin" : "2022-11-04", "checkout" : "2022-12-25" }, "additionalneeds" : "Breakfast" }' | jq -r '.bookingid'
-
Check booking ID (bookingid)
curl -s -X GET \ "https://restful-booker.herokuapp.com/booking/14153" | jq
Check Booking
-
Update booking ID, kita update “additional need” dari breakfast ke king size bed
curl -s -X PUT \ https://restful-booker.herokuapp.com/booking/1 \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Cookie: token=abc123' \ -d '{ "firstname" : "Anyong", "lastname" : "Haseo", "totalprice" : 112, "depositpaid" : true, "bookingdates" : { "checkin" : "2022-11-04", "checkout" : "2022-12-25" }, "additionalneeds" : "King Size Bed" }'
Update Booking
-
Delete booking ID
curl -s -X DELETE \ https://restful-booker.herokuapp.com/booking/14153 \ -H 'Content-Type: application/json' \ -H 'Cookie: token=d4aebae5dd25ebd'
Delete Booking
Buat Otomatisasi dengan Shell Script
Buka editor kamu, copy script
di bawah ini
#!/bin/bash
USER="admin"
PASS="password123"
BOOKING_FIRSTNAME="anyong"
BOOKING_LASTNAME="haseo"
BOOKING_TOTALPRICE="111"
BOOKING_DEPOSITPAID="true"
BOOKING_CHECKIN="2022-11-04"
BOOKING_CHECKOUT="2022-11-29"
BOOKING_ADDITIONALNEEDS="breakfast"
UPDATE_BOOKING_ADDITIONALNEEDS="king size bed"
#make json output using jo
JSON_AUTH=$( jo "username=$USER" "password=$PASS" )
JSON_BOOKING_DATA=$( jo -p "firstname=$BOOKING_FIRSTNAME" "lastname=$BOOKING_LASTNAME" \
"totalprice=$BOOKING_TOTALPRICE" "depositpaid=$BOOKING_DEPOSITPAID" \
"bookingdates[checkin]=$BOOKING_CHECKIN" "bookingdates[checkout]=$BOOKING_CHECKOUT" \
"additionalneeds=$BOOKING_ADDITIONALNEEDS")
JSON_UPDATE_BOOKING_DATA=$( jo -p "firstname=$BOOKING_FIRSTNAME" "lastname=$BOOKING_LASTNAME" \
"totalprice=$BOOKING_TOTALPRICE" "depositpaid=$BOOKING_DEPOSITPAID" \
"bookingdates[checkin]=$BOOKING_CHECKIN" "bookingdates[checkout]=$BOOKING_CHECKOUT" \
"additionalneeds=$UPDATE_BOOKING_ADDITIONALNEEDS")
#GET auth token
GET_TOKEN=`(curl -s -X POST \
https://restful-booker.herokuapp.com/auth \
-H 'Content-Type: application/json' \
-d "$JSON_AUTH" | jq -r '.token')`
echo token: $GET_TOKEN
#GET bookingid
GET_BOOKING_ID=`(curl -s -X POST \
"https://restful-booker.herokuapp.com/booking" \
-H 'Content-Type: application/json' \
-d "$JSON_BOOKING_DATA" \
| jq -r '.bookingid')`
echo bookingid: $GET_BOOKING_ID
#GET booking data
GET_BOOKING_DATA=`(curl -s -X GET \
"https://restful-booker.herokuapp.com/booking/$GET_BOOKING_ID" | jq)`
echo -e "booking data:\n $GET_BOOKING_DATA"
COOKIE_HEADER=(-H "Content-Type: application/json" -H "Cookie: token=${GET_TOKEN}" )
#UPDATE booking data
UPDATE_BOOKING_DATA=`(curl -s -X PUT \
"https://restful-booker.herokuapp.com/booking/$GET_BOOKING_ID" \
"${COOKIE_HEADER[@]}" \
-d "$JSON_UPDATE_BOOKING_DATA")`
#GET updated booking data
GET_UPDATE_BOOKING_DATA=`(curl -s -X GET \
"https://restful-booker.herokuapp.com/booking/$GET_BOOKING_ID" | jq)`
echo -e "update booking data:\n $GET_UPDATE_BOOKING_DATA"
# echo $JSON_TOKEN
# echo -e "$UPDATE_BOOKING_DATA"
# echo ${COOKIE_HEADER[@]}
# # echo ${HEADERS[@]}
#DELETE booking data
#try using URL in variable
#it was cleaner
URL="https://restful-booker.herokuapp.com/booking/$GET_BOOKING_ID"
curl "${COOKIE_HEADER[@]}" -X DELETE "$URL"

Script Result
References:
Stackoverflow - How to use shell variable for headers of curl command

Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria
If you feel this website help you, you can donate at saweria