JavaRush /จาวาบล็อก /Random-TH /ฤดูใบไม้ผลิไม่น่ากลัว การควบคุมส่วนที่เหลือของคุณ
Павел
ระดับ

ฤดูใบไม้ผลิไม่น่ากลัว การควบคุมส่วนที่เหลือของคุณ

เผยแพร่ในกลุ่ม
เนื้อหาของวงจรของบทความ การนำ งานของคนอื่นมาใช้ซ้ำถือเป็นเรื่องศักดิ์สิทธิ์สำหรับนักพัฒนา ☺ ในการก้าวต่อไป คุณต้องเข้าใจพื้นฐานของเครือข่ายคอมพิวเตอร์ นี่คือชุดบทความ . ให้ความสนใจกับประเด็นหลัก: วิธีการทำงานของ HTTP, GET, POST, PUT คืออะไร, สถานะการตอบกลับ, MVC,อ่านแยกต่างหากเกี่ยวกับ JSON และการทำให้เป็นอนุกรม มันจะมีประโยชน์หากนำตัวอย่างที่เสนอไปใช้กับเซิร์ฟเล็ตซึ่งจะช่วยให้คุณรักสปริงบูทอย่างสุดใจ ตัวอย่างแอปพลิเคชัน spring-boot จากซีรีส์นี้ค่อนข้างเรียบง่าย แต่จะช่วยให้คุณเข้าใจสาระสำคัญของ MVC ด้านล่างนี้จะมีลิงค์ไปยังโครงการที่น่าสนใจยิ่งขึ้น หากต้องการทำความคุ้นเคยกับ REST และการใช้งานใน Spring โปรดอ่านบทความ ทั้งสาม นี้ ในบทความแรกคุณจะอ่านว่า REST คืออะไร บทความ ที่สองพูดถึงคำขอและการตอบกลับ โปรดอ่านและรับทราบความคิดเห็นของสหายฟิเดล บทความ ที่สามจะนำเสนอตัวอย่างการใช้งานจริงใน Spring วิธีการสร้างแอปพลิเคชันไม่แตกต่างกันมากนัก (ดูและเปรียบเทียบมีประโยชน์) นำไปปฏิบัติ ให้ความสนใจกับสถานที่ที่พวกเขาพูดถึง HttpStatus, ResponseEntity <?> (หาก <?> ทำให้สับสน ให้อ่านบทที่ 13 ลักษณะทั่วไปจาก "Java. A Beginner's Guide", Herbert Shildt) ในบทความเดียวกันนี้อ่านเกี่ยวกับ POSTMAN (วิดีโอสั้น ๆ เพิ่มเติมเกี่ยวกับเรื่องนี้ ) ติดตั้ง POSTMAN คุณไม่จำเป็นต้องมีคุณสมบัติทั้งหมด ดูวิธีสร้างแบบสอบถามต่างๆ มี ตัวดำเนินการที่ประกอบด้วยสามส่วนในตัวอย่างโปรดรีเฟรชหน่วยความจำของคุณหากคุณลืม ให้ความสนใจกับวิธีที่บทความตัวอย่างใช้การฉีดถั่วโดยใช้ @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
คุณควรทราบว่าตั้งแต่ Spring 4.3 เป็นต้นไป คำอธิบายประกอบ @Autowired สามารถละเว้นได้ หากคลาสมีตัวสร้างเพียงตัวเดียว กรอบงานจะพิจารณาว่าจำเป็นต้องนำ bean ไปใช้ในตัวสร้าง คุณสามารถอ่านเพิ่มเติมได้ในแหล่งนี้ และหากคุณระวังคุณควรมีคำถามเกี่ยวกับโครงสร้างของ แพ็คเกจ บริการกล่าวคือ: เหตุใดจึงมีอินเทอร์เฟซ ClientServiceและคลาสสาธารณะ ClientServiceImpl - นี่เป็นแนวทางปฏิบัติที่ถูกต้องในภายหลังเราจะพูดถึงสาเหตุที่จำเป็นและเรา จะใช้มัน นั่นคือทั้งหมดที่มีบทความ ก่อนอ่านมาเขียนกันก่อน อย่างที่พวกเขาพูดว่า: “ไม่ใช่วันที่ไม่มีรหัส!” เพื่อเป็นจุดเริ่มต้น เรามาสร้างคำขอ GET แบบง่ายๆ กัน ครั้งล่าสุดที่เราเขียนแอปพลิเคชันสำหรับการเก็งกำไรผัก git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git เปิดแอปพลิเคชันและในแพ็คเกจ ru java.rush เราจะสร้างแพ็คเกจคอนโทรลเลอร์ (คอนโทรลเลอร์จากรูปแบบ MVC จะอยู่ที่นี่) สร้างคลาส ProductController คลาสสาธารณะ
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
คำอธิบายประกอบ @RestController ระบุให้ Spring ว่านี่คือตัวควบคุมส่วนที่เหลือ @RequestMapping - วิธีการควบคุมทั้งหมดจะได้รับการร้องขอด้วย URI ที่จะเริ่มต้นด้วยสตริงที่ระบุในวงเล็บคำอธิบายประกอบ ("/ การเก็งกำไร") เราเขียนวิธีการต่อไปนี้ในชั้นเรียน
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
เราเปิดตัวโครงการ พิมพ์บรรทัดเบราว์เซอร์: http://localhost:8080/speculation/simple เราได้รับคำตอบ: คำขอ Easy GET คำอธิบายบางประการ: 1. เราสร้างคลาสที่ทำเครื่องหมาย @RestController เป็นตัวควบคุม โดยระบุ เส้นทางไป @RequestMapping ("/ การเก็งกำไร") – คำอธิบายประกอบนี้เป็นทางเลือก หากไม่มี เส้นทางจะเริ่มต้นด้วย "/" 2. เราสร้างวิธีการที่เมื่อดำเนินการแล้วจะส่งคืนสตริง (คำขอ Light GET) ทำเครื่องหมายด้วยคำอธิบายประกอบ @GetMapping (ซึ่งวิธีนี้มีไว้สำหรับคำขอ GET โดยเฉพาะ) และระบุเส้นทางไปยังวิธีการ ("/simple") 3. เราเปิดตัวโครงการ (เซิร์ฟเวอร์) บนพอร์ต 8080 และทำการร้องขอ GET ไปยังที่อยู่: เซิร์ฟเวอร์/คอนโทรลเลอร์/วิธีการ (http://localhost:8080/speculation/simple) 4. สตริงสาธารณะ simple(){ return วิธี "Easy GET requester" ใช้ได้กับคำขอนี้ } 5. ผลลัพธ์ของวิธีการถูกส่งกลับไปยังเบราว์เซอร์ในรูปแบบของสตริง “คำขอ Easy GET” เอาล่ะ มันคือการเริ่มต้น! บทความที่น่าสนใจที่สุดรอคุณอยู่ การเรียนรู้เนื้อหาที่เสนอข้างต้นจะใช้เวลามากกว่าหนึ่งวัน ไม่จำเป็นต้องเร่งรีบที่นี่ หัวข้อนี้สำคัญมากและต้องเข้าใจ “กินช้างเป็นชิ้นๆ” สำหรับการฝึกอบรม ( หลังจากเชี่ยวชาญเนื้อหาแล้ว): กรอก ตัวควบคุมแอปพลิเคชัน การเก็งกำไร ให้สมบูรณ์ สร้างวิธีการ: 1) ค้นหาผลิตภัณฑ์ด้วย id ใช้ เมธอด productService.findById() ตัวอย่างเอาต์พุต
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
หลังจากใช้วิธีการควบคุมที่เหลือแล้ว ลองคิดว่า: “เหตุใดสองฟิลด์สุดท้ายจึงเป็นโมฆะ ต้องทำอย่างไรจึงจะมีค่าบางค่าอยู่ที่นั่น” 2) ดูสินค้าทั้งหมดบนหน้าร้าน: หากต้องการค้นหาสินค้าทั้งหมด ให้ใช้เมธอด productService.findAll() หากต้องการกรอกข้อมูลในช่องบรรจุภัณฑ์และมาร์กอัป ให้ใช้ productService.pack(); productService.makeMoney(); ผลลัพธ์ควรมีอาร์เรย์ JSON ที่แสดงผลิตภัณฑ์ เช่น:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) การเพิ่มผลิตภัณฑ์ใหม่ลงในฐานข้อมูล (เพิ่มผลิตภัณฑ์: กะหล่ำปลีและราคาซื้อขายส่ง) ใช้: productService.save(); วิธีการควรส่งคืนสถานะ Http ที่สอดคล้องกัน 4) การลบผลิตภัณฑ์ด้วย id เมื่อต้องการทำเช่นนี้ ขั้นแรกให้นำเมธอดที่มี productRepository.deleteById(); ไปใช้งานใน ProductService จากนั้นนำไปใช้ในคอนโทรลเลอร์ วิธีการควบคุมจะต้องส่งกลับสถานะ Http ที่เหมาะสม 5) การเปลี่ยนแปลงสินค้าตามรหัส (การเปลี่ยนแปลงราคาขายส่งของผลิตภัณฑ์และชื่อผลิตภัณฑ์) การดำเนินการนี้จะซับซ้อนกว่าครั้งก่อน ก่อนอื่น เราต้องค้นหาผลิตภัณฑ์ที่เราต้องการเปลี่ยนด้วย id Use productService.findById(); จากนั้นในผลิตภัณฑ์ที่พบ (อ็อบเจ็กต์) ให้แทนที่ค่าของฟิลด์ด้วยค่าของฟิลด์ของอ็อบเจ็กต์ที่ได้รับในเนื้อความของคำขอ Put (json_object) ซึ่งสามารถทำได้ดังนี้:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
หลังจากนี้ ผลิตภัณฑ์ที่เปลี่ยนแปลงจะต้องถูกบันทึก productService.save(found_product); วิธีการควรส่งคืนสถานะ Http ที่สอดคล้องกัน หากคุณมีปัญหากับวิธีนี้ คุณสามารถ google “put request java” ได้ ยังไม่มีใครยกเลิกอินเทอร์เน็ต) การทำงานกับคอนโทรลเลอร์ยังไม่จบเพียงเท่านี้ ยังมีอีกหลายหัวข้อรออยู่ข้างหน้า...
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION