Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια χαρα σε ολους!

Εχω μια απορια σχετικα με τους Controllers στο Laravel.

Εστω οτι θελω να φτιαξω μια εφαρμογη οπου ο χρηστης θα μπορει να βλεπει:

- Ολα τα βιβλια των οποιων ο τιτλος ξεκιναει απο "Α" στο: /books/a, απο "Β" στο /books/b και ουτω καθεξης.

- Ενα συγκεκριμενο βιβλιο στο: /book/book-title.

Εχω φτιαξει 2 διαφορετικους Controllers (BooksController και BookController) αλλα 1 Model, αφου και στις δυο περιπτωσεις αντλω τα δεδομενα απο τον ιδιο πινακα στη βαση (books).

Για καποιο λογο, το οτι εφτιαξα 2 Controllers μου φανηκε πλεονασμος, παρα το οτι δουλευει μια χαρα. Ειναι καλη πρακτικη ή υπαρχει καποιο λαθος στον παραπανω τροπο;

Περισσοτερο ρωταω απο την αποψη, μηπως θα επρεπε/μπορουσα να κανω την ιδια δουλεια με 1 Controller αντι για 2.

Ευχαριστω πολυ εκ των προτερων!

Δημοσ.

γενικα αυτο δεν ειναι μονο του laravel  αλλα γενικο concept του rest.

εφοσον εχεις το books  σαν domain  εκει αφορα ολες τις λειτουργιες που μπορει να γινουν στο Books, πχ  delete ,add κτλ..

Το καλυτερο θα ηταν ενας controller bookscontroller, κατα δευτερον οταν εχουμε καποιου ειδους search πχ τα βιβλια που αρχιοζυν απο αλφα τοτε πρεπει να τα περνας σαν query parameters api/books?firstletter =a  και οχι σαν api/books/α.

  • Like 1
Δημοσ.

Κατά την γνώμη μου δεν είναι πλεονασμός. Πλέον δεν κοιτάμε την ποσότητα των κλάσεων. Αλλά τον κώδικα μέσα σ αυτές. Το να κάνει διαφορετικές κλάσεις στην πορεία θα σου λύσουν τα χέρια σε εργασίες που θα χρειαστεί το url books και book. 

  • Like 1
Δημοσ.

Αν καταλαβα καλα απο αυτο που ειπε ο Μητσαρας, θα πρεπει να εχω τον εναν απο τους δυο Controller (BooksController) και π.χ. στο api/books?firstletter=a να φτιαξω το Route να δουλευει με τις παραμετρους του Request. Θα το δοκιμασω.

Αν και μπερδευτηκα λιγο ευχαριστω πολυ και τους δυο!

 

 

Δημοσ.

Μπορείς να κάνεις την ίδια δουλειά με 1 controller. Και γενικά στη Laravel δεν συνηθίζουμε να ονομάζουμε controllers χρησιμοποιώντας πληθυντικό αριθμό. Μπορεί το route σου να είναι books αλλά ο controller να είναι BookController. Συνήθως τα routes είναι στον πληθυντικό αριθμό σε τέτοιες περιπτώσεις(δλδ books/title)

Τώρα κατά πόσο θες να περάσεις το πρώτο γράμμα ως query ή ως διαφορετικό route το αφήνω σε σένα. Αφού το έχεις ως ξεχωριστό route θα μείνω σε αυτό.

Γενικά μπορείς να δηλώσεις ξεχωριστά τα routes σου ως

// web.php ή εκεί όπου δηλώνεις τα routes σου
// Περισσότερες πληροφορίες δες documentation για wildcards & routing

// Έστω πως έχεις συνάρτηση στον controller getByFirstLetter($letter)
Route::get('/books/{letter}', 'BookController@getByFirstLetter');
Route::get('/book/{book-title}' , 'BookController@show');

Αλλά και πάλι δεν συμφωνώ πολύ με την ιδέα. Άμα δεν θα έχω κατηγορίες ως προς το γράμμα και το χρειάζομαι αυτό μόνο για search θα έκανα αυτό που είπε ο Μητσάρας. Συνήθως όταν έχουμε να κάνουμε μια αναζήτηση βάζουμε GET parameters στο url( ?parametros_edo=mia_timi&defteri_parametros=alli_timi&triti......)

Αύριο μπορεί να θες να ψάξεις αυτά που ξεκινούν με ΑΒ και τελειώνουν σε Σ...

  • Like 1
Δημοσ.

Ευχαριστω φιλε! Οσο το σκεφτομαι συμφωνω μαλλον.

Οσον αφορα τον πληθυντικο ειχα ξεκινησει απο αυτο το Laracast, οπου οταν φτανει στους Controllers επιλεγει PostsController αντι για PostController. Τωρα που το εψαξα ειδα οτι γενικα η συμβαση ειναι ο ενικος, ευχαριστω και για αυτο!

Δημοσ.
2 ώρες πριν, Jordan95 είπε

Αν καταλαβα καλα απο αυτο που ειπε ο Μητσαρας, θα πρεπει να εχω τον εναν απο τους δυο Controller (BooksController) και π.χ. στο api/books?firstletter=a να φτιαξω το Route να δουλευει με τις παραμετρους του Request. Θα το δοκιμασω.

Αν και μπερδευτηκα λιγο ευχαριστω πολυ και τους δυο!

ναι εννοθσα εναν controller να εχεις , πχ αν ειχες και authors, θα ειχες δυο controller, authorscontroller και bookscontroller και εκει θα εβαζες τις λειτουργιες που κανει η καθε οντοτητα. 

ριξε μια ματια και εδω.

https://restfulapi.net/resource-naming/

Αναφορά σε κείμενο

Use forward slash (/) to indicate hierarchical relationships
The forward slash (/) character is used in the path portion of the URI to indicate a hierarchical relationship between resources. e.g.

http://api.example.com/device-management
http://api.example.com/device-management/managed-devices
http://api.example.com/device-management/managed-devices/{id}
http://api.example.com/device-management/managed-devices/{id}/scripts
http://api.example.com/device-management/managed-devices/{id}/scripts/{id}

Αναφορά σε κείμενο

Use query component to filter URI collection
Many times, you will come across requirements where you will need a collection of resources sorted, filtered or limited based on some certain resource attribute. For this, do not create new APIs – rather enable sorting, filtering and pagination capabilities in resource collection API and pass the input parameters as query parameters. e.g.

http://api.example.com/device-management/managed-devices
http://api.example.com/device-management/managed-devices?region=USA
http://api.example.com/device-management/managed-devices?region=USA&brand=XYZ
http://api.example.com/device-management/managed-devices?region=USA&brand=XYZ&sort=installation-date

προφανως θα δεις πολλες παραλλαγες σε χωρο εργασιας  πανω σε σχεση με  το αρθρο , πολλες περιπτωσεις  πχ  ολα τα κανουν με post , η δεν ακολουθουν τα Naming conventions.

  • Thanks 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...