Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Το ακρωνύμιο REST σημαίνει Μεταφορά κατάστασης αντιπροσωπείας, ενώ το API σημαίνει Διασύνδεση προγραμματισμού εφαρμογής. Μαζί, αναφέρονται σε ένα REST API. Ένα REST API είναι μια υπηρεσία που μεταφέρει αιτήματα και απαντήσεις μεταξύ δύο συστημάτων λογισμικού, σε μια αρχιτεκτονική REST.

Η αρχιτεκτονική REST δημιουργεί υπηρεσίες ιστού που είναι προσβάσιμες μέσω διευθύνσεων URL χρησιμοποιώντας ένα από τα τέσσερα ρήματα αιτήματος: POST, GET, PUT και DELETE. Έτσι, θα μπορούσατε να πείτε ότι ένα REST API είναι λογισμικό που σας επιτρέπει να δημιουργείτε, να διαβάζετε, να ενημερώνετε και να διαγράφετε πόρους μέσω διευθύνσεων URL.

Μπορείτε να μάθετε πώς να δημιουργείτε ένα REST API χρησιμοποιώντας το Spring Boot.

Εκκίνηση της Εφαρμογής Spring Boot

Το πρώτο πράγμα που πρέπει να κάνετε είναι εξοικειωθείτε με τα βασικά της Άνοιξης

instagram viewer
και ρυθμίστε μια εφαρμογή Spring Boot. Ωστόσο, θα χρειαστεί να αλλάξετε τις εξαρτήσεις. Εκτός από την εξάρτηση ιστού, θα χρειαστεί να λάβετε την εξάρτηση Spring Data Java Persistent API (JPA) και το πρόγραμμα οδήγησης για τη βάση δεδομένων που σκοπεύετε να χρησιμοποιήσετε (αυτή η εφαρμογή θα χρησιμοποιεί MySQL).

Για αυτό το REST API, θα χρειαστείτε έναν ελεγκτή, ένα μοντέλο και ένα αποθετήριο. Έτσι, το REST API θα έχει την ακόλουθη δομή αρχείου:

Δημιουργία του Μοντέλου

Η πρώτη κατηγορία που θα χρειαστεί να δημιουργήσετε είναι το μοντέλο πελάτη, το οποίο αποθηκεύει τη λογική των δεδομένων.

πακέτο com.onlineshopaholics.api.model;

εισαγωγή jakarta.επιμονή. Στήλη;
εισαγωγή jakarta.επιμονή. Οντότητα;
εισαγωγή jakarta.επιμονή. GeneratedValue;
εισαγωγή jakarta.επιμονή. GenerationType;
εισαγωγή jakarta.επιμονή. Ταυτότητα;
εισαγωγή jakarta.επιμονή. Τραπέζι;

@Τραπέζι(όνομα ="πελάτης")
@Οντότητα
δημόσιοτάξηΠελάτης{
@Ταυτότητα
@GeneratedValue(στρατηγική = GenerationType. ΑΥΤΟ)
ιδιωτικός Αναγνωριστικό ακέραιου αριθμού;

@Στήλη(όνομα ="Όνομα πελάτη")
ιδιωτικός Όνομα συμβολοσειράς;

ιδιωτικός Συμβολοσειρά email?

δημόσιο Ακέραιος αριθμός getId(){
ΕΠΙΣΤΡΟΦΗ ταυτότητα;
}

δημόσιοκενόςsetId(Ακέραιο αναγνωριστικό){
Αυτό.id = id;
}

δημόσιο Σειρά getName(){
ΕΠΙΣΤΡΟΦΗ όνομα;
}

δημόσιοκενόςsetName(Όνομα συμβολοσειράς){
Αυτό.name = όνομα;
}

δημόσιο Σειρά getEmail(){
ΕΠΙΣΤΡΟΦΗ ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ;
}

δημόσιοκενόςsetEmail(Συμβολοσειρά email){
Αυτό.email = email;
}
}

Από την παραπάνω κατηγορία πελατών, θα δείτε ότι κάθε πελάτης θα έχει αναγνωριστικό, όνομα και email. Θα παρατηρήσετε επίσης αρκετούς σχολιασμούς που εξυπηρετούν διαφορετικούς σκοπούς.

  • @Entity: Δηλώνει την κατηγορία πελατών ως οντότητα JPA. Αυτό σημαίνει ότι το JPA θα χρησιμοποιήσει τα πεδία της κλάσης για να δημιουργήσει στήλες σε μια σχεσιακή βάση δεδομένων.
  • @Table: Προσδιορίζει το όνομα του πίνακα που θα αντιστοιχιστεί στην κατηγορία μοντέλου πελάτη.
  • @Id: Προσδιορίζει μια ιδιότητα που θα προσδιορίζει μοναδικά την οντότητα στη βάση δεδομένων.
  • @GeneratedValue και @GenerationType: Αυτά συνεργάζονται για να καθορίσουν μια στρατηγική αυτόματης δημιουργίας για το πεδίο με το οποίο συσχετίζεται. Έτσι, το πεδίο id θα δημιουργεί αυτόματα μια μοναδική τιμή κάθε φορά που δημιουργείτε έναν νέο πελάτη.
  • @Column: Προσδιορίζει μια ιδιότητα που αντιστοιχίζεται σε μια στήλη στη βάση δεδομένων. Έτσι, η ιδιότητα ονόματος θα αντιστοιχιστεί σε μια στήλη ονόματος πελάτη στη βάση δεδομένων.

Δημιουργία του Αποθετηρίου

Αυτό το αποθετήριο θα σας επιτρέψει να αλληλεπιδράσετε με τα δεδομένα πελατών στη βάση δεδομένων.

πακέτο com.onlineshopaholics.api.repository;

εισαγωγή org.springframework.data.repository. CrudRepository;
εισαγωγή com.onlineshopaholics.api.model. Πελάτης;

δημόσιοδιεπαφήCustomerRepositoryεκτείνεταιCrudRepository<Πελάτης, Ακέραιος αριθμός>{}

Το αποθετήριο πελατών επεκτείνεται Spring's CrudRepositoy διεπαφή, μεταβιβάζοντάς την την κλάση μοντέλου πελάτη μαζί με τον τύπο του μοναδικού αναγνωριστικού για την οντότητα, Ακέραιος.

Η διεπαφή CrudRepository παρέχει πρόσβαση σε περισσότερες από 10 λειτουργίες, συμπεριλαμβανομένων των γενικών μεθόδων CRUD που θα χρειαστείτε για το REST API. Έτσι, επειδή το CrudRepository ορίζει ήδη τις μεθόδους που θα χρειαστείτε, δεν χρειάζεται να τις δηλώσετε ρητά στη διεπαφή CustomerRepository.

Δημιουργία του ελεγκτή

Ο ελεγκτής σάς επιτρέπει να ενημερώσετε τα δεδομένα στη βάση δεδομένων σας χρησιμοποιώντας το μοντέλο και το αποθετήριο.

πακέτο com.onlineshopaholics.api.controller;

εισαγωγή java.util. Προαιρετικός;

εισαγωγή org.springframework.beans.factory.annotation. Αυτόματη καλωδίωση.
εισαγωγή org.springframework.web.bind.annotation. DeleteMapping;
εισαγωγή org.springframework.web.bind.annotation. GetMapping;
εισαγωγή org.springframework.web.bind.annotation. PathVariable;
εισαγωγή org.springframework.web.bind.annotation. PostMapping;
εισαγωγή org.springframework.web.bind.annotation. PutMapping;
εισαγωγή org.springframework.web.bind.annotation. RequestBody;
εισαγωγή org.springframework.web.bind.annotation. RequestMapping;
εισαγωγή org.springframework.web.bind.annotation. RequestParam;
εισαγωγή org.springframework.web.bind.annotation. ResponseBody;
εισαγωγή org.springframework.web.bind.annotation. RestController;

εισαγωγή com.onlineshopaholics.api.model. Πελάτης;
εισαγωγή com.onlineshopaholics.api.repository. CustomerRepository;

@RestController
@RequestMapping("/οι πελάτες")
δημόσιοτάξηCustomerController{
@Autowired
ιδιωτικός CustomerRepository customerRepository;

// δημιουργία νέου πελάτη
@PostMapping("/Προσθήκη")
δημόσιο Πελάτης addNewCustomer(@RequestBody Customer newCustomer){
Πελάτης χρήστης = νέος Πελάτης();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (χρήστης);
ΕΠΙΣΤΡΟΦΗ χρήστης;
}

// προβολή όλων των πελατών
@GetMapping("προβολή/όλα")
δημόσιο@ResponseBodyΕπαναληπτικόgetAllCustomers(){
ΕΠΙΣΤΡΟΦΗ customerRepository.findAll();
}

// προβολή συγκεκριμένου πελάτη
@GetMapping("view/{id}")
δημόσιο ΠροαιρετικόςgetCustomer(@PathVariable Integer id){
ΕΠΙΣΤΡΟΦΗ customerRepository.findById (id);
}

// ενημέρωση υπάρχοντος πελάτη
@PutMapping("/edit/{id}")
δημόσιο Σειρά εκσυγχρονίζω( @RequestBody Customer updateCustomer, @PathVariable Integer id){
ΕΠΙΣΤΡΟΦΗ customerRepository.findById (αναγνωριστικό)
.map (πελάτης -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (πελάτης);
ΕΠΙΣΤΡΟΦΗ"Τα στοιχεία των πελατών έχουν ενημερωθεί με επιτυχία!";
}).orElseGet(() -> {
ΕΠΙΣΤΡΟΦΗ"Αυτός ο πελάτης δεν υπάρχει";
});
}

// διαγραφή πελάτη
@DeleteMapping("delete/{id}")
δημόσιο Σειρά διαγράφω(@PathVariable("ταυτότητα")Αναγνωριστικό ακέραιου αριθμού) {
customerRepository.deleteById (id);
ΕΠΙΣΤΡΟΦΗ"Ο πελάτης διαγράφηκε με επιτυχία!";
}
}

Ο παραπάνω ελεγκτής εξοπλίζει το REST API με λειτουργίες CRUD, χρησιμοποιώντας πέντε από το CrudRepository μεθόδους διασύνδεσης (η καθεμία εκχωρείται σε μια συγκεκριμένη μέθοδο). Ο ελεγκτής χρησιμοποιεί επίσης πολλούς σημαντικούς σχολιασμούς Spring που του επιτρέπουν να εκτελεί τις λειτουργίες του.

  • @RestController: Αυτός ο σχολιασμός εξυπηρετεί δύο σκοπούς. Σηματοδοτεί μια κατηγορία για ανακάλυψη με σάρωση στοιχείων. Λέει επίσης στο Spring να γράψει την τιμή επιστροφής για όλες τις μεθόδους, σε αυτήν την κλάση, στο σώμα απόκρισης.
  • @RequestMapping: Καθορίζει το μοτίβο αιτήματος γραμμής βάσης που θα χειριστεί ο ελεγκτής. Έτσι, αυτός ο ελεγκτής θα χειρίζεται όλα τα αιτήματα προς "/πελάτες".
  • @ResponseBody: Επιτρέπει σε μια μέθοδο να επιστρέψει μια ολόκληρη οντότητα.
  • @RequestBody: Σας επιτρέπει να μετατρέψετε το σώμα του αιτήματος σε αντικείμενο.
  • @RequestParam: Σας επιτρέπει να απομονώσετε μια ιδιότητα από ένα αντικείμενο.
  • @PathVariable: Σας επιτρέπει να αντιστοιχίσετε μια τιμή αιτήματος σε ένα σύμβολο κράτησης θέσης. Αντιστοιχίζει το αναγνωριστικό που δίνεται στη μέθοδο διαγραφής με μια υπάρχουσα τιμή στη βάση δεδομένων.
  • @PostMapping: Σας επιτρέπει να δημιουργείτε πόρους.
  • @GetMapping: Σας επιτρέπει να διαβάζετε δεδομένα πόρων.
  • @PutMapping: Σας επιτρέπει να ενημερώσετε τους πόρους.
  • @DeleteMapping: Σας επιτρέπει να διαγράψετε πόρους.

Σύνδεση της βάσης δεδομένων με την εφαρμογή σας

Για να συνδέσετε μια βάση δεδομένων σε οποιαδήποτε εφαρμογή Spring, θα χρειαστεί να χρησιμοποιήσετε το εφαρμογή.ιδιότητες αρχείο κάτω από το φάκελο πόρων. Αυτό το αρχείο είναι αρχικά κενό, επομένως μπορείτε να το συμπληρώσετε με τις κατάλληλες ιδιότητες για τη βάση δεδομένων που σκοπεύετε να χρησιμοποιήσετε. Αυτή η εφαρμογή θα χρησιμοποιεί μια βάση δεδομένων MySQL, επομένως, το αρχείο application.properties θα περιέχει τα ακόλουθα δεδομένα:

spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. Οδηγός

Τα παραπάνω δεδομένα δείχνουν ότι αυτή η εφαρμογή θα συνδέεται με μια βάση δεδομένων MySQL που ονομάζεται onlineshopaholics, με όνομα χρήστη "root" και κωδικό πρόσβασης "securepw". Το επόμενο βήμα σας είναι να δημιουργήσετε τη βάση δεδομένων και τον πίνακα πελατών στη MySQL.

Δημιουργία αιτημάτων

Υπάρχουν πολλά εργαλεία που μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε το REST API σας. Ο Postman είναι ένα δημοφιλές εργαλείο δοκιμών REST API, και μπορείτε να το χρησιμοποιήσετε για να δοκιμάσετε το απλό API που έχετε δημιουργήσει. Αφού δημιουργήσετε τον πίνακα MySQL και εκτελέσετε την εφαρμογή Spring, μπορείτε να εκκινήσετε τον Postman και να πειραματιστείτε με τα τέσσερα ρήματα αιτήματος.

ΑΝΑΡΤΗΣΗ Αίτησης

Αυτό το αίτημα θα σας επιτρέψει να δημιουργήσετε νέους πελάτες χρησιμοποιώντας το REST API. Για να ολοκληρώσετε αυτό το αίτημα, θα πρέπει να μεταβείτε στην ενότητα κεφαλίδων του αιτήματος ανάρτησής σας και να δημιουργήσετε μια νέα κεφαλίδα (Τύπος περιεχομένου). Θα πρέπει να ορίσετε την τιμή αυτής της κεφαλίδας σε application/json, καθώς θα δημιουργείτε νέους πελάτες χρησιμοποιώντας JSON.

Στο σώμα του αιτήματος, θα πρέπει να αλλάξετε τον τύπο σε ακατέργαστο και να εισαγάγετε το JSON σας. Στη συνέχεια, θα χρειαστεί να εισαγάγετε τη διεύθυνση URL της ανάρτησης:

Η αποστολή του αιτήματος θα επιστρέψει την ακόλουθη απάντηση:

Μπορείτε να δείτε ότι το αίτημα ήταν επιτυχές και ο νέος πελάτης έχει επίσης ένα αναγνωριστικό.

Αίτημα GET

Τώρα που έχετε έναν πελάτη, μπορείτε να τον προβάλετε με το αίτημα λήψης που επιστρέφει όλους τους πελάτες:

Ή κάθε πελάτης με αναγνωριστικό:

Αίτημα PUT

Μπορείτε να ενημερώσετε τη Janet με νέο επώνυμο και email.

ΔΙΑΓΡΑΦΗ Αίτημα

Μπορείτε επίσης να διαγράψετε τη Janet από τη βάση δεδομένων.

Δοκιμάστε το Spring REST API χρησιμοποιώντας το JUnit

Με το Spring Boot, μπορείτε να δοκιμάσετε οποιαδήποτε εφαρμογή (συμπεριλαμβανομένων των REST API) χρησιμοποιώντας το δοκιμαστικό αρχείο του Spring. Η δοκιμή λογισμικού είναι σημαντική για το Spring Boot. Κάθε αρχικοποιημένη εφαρμογή Spring χρησιμοποιεί το JUnit για δοκιμή και σας επιτρέπει να στέλνετε αιτήματα στα REST API σας.