มาต่อกันจากตอนที่แล้วที่เราได้ทำ API สำหรับ get เครื่องสำอางของแฟนมาดูได้สำเร็จไปละ ขั้นตอนต่อไปที่เราตกลงกันไว้คือ เราจะมาลบมันทิ้ง ! หึ ! ซึ่งก็ทำได้ง่ายๆอีกเช่นกัน ไปดูกันเลย

ปล. สำหรับ part ที่แล้วมีการใช้คำว่า function ไปบ้าง ขออภัยขรั่บ จริงๆแล้วใน Java มันเรียกว่า method นะขรั่บ

สร้าง method สำหรับลบเครื่องสำอางใน CosmeticController

ไปที่ไฟล์ CosmeticController.java ที่เราสร้างไว้นั่นแหล่ะ ไปเพิ่ม method นึงที่ทำการลบเครื่องสำอางออกจาก list ของเรากันเลย

  1. สร้าง method ลบ

เราจะต้องสร้าง method ที่รับ id ของ cosmetic นั้นๆเข้ามา จากนั้นทำการ search หาและค่อยลบทิ้งไป

public void deleteCosmetics(String id) {    // วนลูปหาทุกๆตัวใน list cosmetics ของเรา
for(int i = 0; i < cosmetics.size(); i++) {
// ถ้า id ของ cosmetic index ที่ i มีค่าเท่ากับ id ที่ใส่เข้ามา
if(cosmetics.get(i).getId().equals(id)) {
// ลบทิ้ง และ ออกจากลูป
cosmetics.remove(i);
break;
}
}
}

2. ใส่ Annotation เพื่อ ผูก method กับ url

สำหรับ annotation ที่เราจะใช้คราวนี้ก็คือ @RequestMethod เหมือนเดิมนั่นแหล่ะ แต่มันจะมีอะไรต่างจากเดิมไปนิ้ดหน่อย หน้าตาจะเป็นแบบนี้

@RequestMapping(value = "/cosmetics/{id}",   
method=RequestMethod.DELETE)

สังเกตได้ว่า parameter ของ annotation แตกต่างออกไปจากคราวที่แล้วโดนมีการระบุชัดเจนไปเลยว่า

  • value คือ url ที่จะทำการผูก นั่นก็คือ“/cosmetics/{id}” การที่เราใส่ {id} จะทำให้เราสามารถระบุใน url ได้เลยว่า เราจะลบ cosmetic id อะไร
  • method ของ HTTP Request ก็คือ DELETE

จากนั้นเราต้องมาระบุใน method เราสักหน่อยว่าเรามีการส่ง variable มาทาง url ด้วยนะ โดยการใช้ annotation @PathVariable ไปที่ parameter ของ method แบบนี้

public void deleteCosmetics(@PathVariable String id) {

class CosmeticController ของเราก็จะหน้าตาประมาณนี้ละ

package com.thirajade.cosmetic.api;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CosmeticController {
List<Cosmetic> cosmetics = new ArrayList<>(Arrays.asList(
new Cosmetic("LIP001", "XOXO Lipstick", 1),
new Cosmetic("BRO001", "NYX Brush On Palette", 1)
));
@RequestMapping("/cosmetics")
public List<Cosmetic> getAllCosmetics() {
return cosmetics;
}
@RequestMapping(value = "/cosmetics/{id}",
method=RequestMethod.DELETE)
public void deleteCosmetics(@PathVariable String id) {
for(int i = 0; i < cosmetics.size(); i++) {
if(cosmetics.get(i).getId().equals(id)) {
cosmetics.remove(i);
break;
}
}
}
}

แค่นี้เราก็น่าจะสามารถลบเครื่องสำอางเราได้แล้วววววว

ทดสอบ API ลบของเรากัน

1. รัน application ของเราขึ้นมาโลด

2. ใช้ Postman get เครื่องสำอางที่มีอยู่ปัจจุบันขึ้นมาดูก่อน

ผลลัพธ์จากการ get เครื่องสำอางขึ้นมาดูก่อนลบ

3. ใช้ Postman ในการทดลองส่ง request DELETE มาให้ application ของเราที่ลิ้งค์

http://localhost:8080/cosmetics/LIP001

โดยที่ LIP001 ที่ใส่เข้าไปด้านหลังนั้นคือ id ของ cosmetic เรานั่นเอง แบบนี้

เปลี่ยน method เป็น DELETE และ ใส่ url เข้าไป

จากนั้นกดปุ่ม Send ได้เลย ตรง Body ถ้าไม่ขึ้น error หรืออะไรมาแสดงว่าน่าจะได้แล้วล่ะ แบบนี้

ตรงช่อง body จะเป็นโล่งๆงี้

4. ใช้ Postman ทำการ Get ขึ้นมาอีกรอบนึงเพื่อดูว่าเครื่องสำอางถูกลบไปหรือยัง

ผลลัพธ์จากการ get เครื่องสำอางขึ้นมาดูหลังจากทำการลบ

หายไปแล้ววววววววววว ลบได้แล้ววววววววววววววววววววว LIP001 หายไปแล้วววววววววววว ทุกโคนนนนนนนนนนนนนนนน

บทสรุป

การสร้าง RESTful API โดยใช้ Spring Boot เนี่ยก็คือการเขียน Java application ปกติเนี่ยแหล่ะ สิ่งที่ต่างกันออกไปเลยคือ การใช้ annotation แค่นั้นเองเพื่อให้ Java application ปกติของเราสามารถทำตัวเป็น server แล้วรับ request ต่างๆมาได้นั่นเอง

สำหรับตอนต่อไปเราจะเป็นบทความเกี่ยวกับอะไร ต้องรอติดตามดูครับ อิอิ

--

--