สร้าง RESTful API ง่ายๆด้วย Spring Framework & Spring Boot (Part 2/2)
มาต่อกันจากตอนที่แล้วที่เราได้ทำ API สำหรับ get เครื่องสำอางของแฟนมาดูได้สำเร็จไปละ ขั้นตอนต่อไปที่เราตกลงกันไว้คือ เราจะมาลบมันทิ้ง ! หึ ! ซึ่งก็ทำได้ง่ายๆอีกเช่นกัน ไปดูกันเลย
ปล. สำหรับ part ที่แล้วมีการใช้คำว่า function ไปบ้าง ขออภัยขรั่บ จริงๆแล้วใน Java มันเรียกว่า method นะขรั่บ
สร้าง method สำหรับลบเครื่องสำอางใน CosmeticController
ไปที่ไฟล์ CosmeticController.java ที่เราสร้างไว้นั่นแหล่ะ ไปเพิ่ม method นึงที่ทำการลบเครื่องสำอางออกจาก list ของเรากันเลย
- สร้าง 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 เครื่องสำอางที่มีอยู่ปัจจุบันขึ้นมาดูก่อน
3. ใช้ Postman ในการทดลองส่ง request DELETE มาให้ application ของเราที่ลิ้งค์
http://localhost:8080/cosmetics/LIP001
โดยที่ LIP001 ที่ใส่เข้าไปด้านหลังนั้นคือ id ของ cosmetic เรานั่นเอง แบบนี้
จากนั้นกดปุ่ม Send ได้เลย ตรง Body ถ้าไม่ขึ้น error หรืออะไรมาแสดงว่าน่าจะได้แล้วล่ะ แบบนี้
4. ใช้ Postman ทำการ Get ขึ้นมาอีกรอบนึงเพื่อดูว่าเครื่องสำอางถูกลบไปหรือยัง
หายไปแล้ววววววววววว ลบได้แล้ววววววววววววววววววววว LIP001 หายไปแล้วววววววววววว ทุกโคนนนนนนนนนนนนนนนน
บทสรุป
การสร้าง RESTful API โดยใช้ Spring Boot เนี่ยก็คือการเขียน Java application ปกติเนี่ยแหล่ะ สิ่งที่ต่างกันออกไปเลยคือ การใช้ annotation แค่นั้นเองเพื่อให้ Java application ปกติของเราสามารถทำตัวเป็น server แล้วรับ request ต่างๆมาได้นั่นเอง
สำหรับตอนต่อไปเราจะเป็นบทความเกี่ยวกับอะไร ต้องรอติดตามดูครับ อิอิ