Το Swagger είναι ένα κανονιστικό και πλήρες πλαίσιο για τη δημιουργία, την περιγραφή, την κλήση και την οπτικοποίηση υπηρεσιών web τύπου RESTful.
Ο γενικός στόχος είναι ο πελάτης και το σύστημα αρχείων να ενημερώνονται με την ίδια ταχύτητα με τον διακομιστή. Οι μέθοδοι, οι παράμετροι και τα μοντέλα του αρχείου είναι στενά ενσωματωμένα στον κώδικα από την πλευρά του διακομιστή, επιτρέποντας στα API να παραμένουν συγχρονισμένα ανά πάσα στιγμή. Το Swagger δεν διευκόλυνε ποτέ την ανάπτυξη και τη χρήση ισχυρών API.
αναθεώρηση
Αρχικά, δημιουργήστε ένα νέο έργο ASP.NET Core 3.1 και χρησιμοποιήστε το nuget για να εγκαταστήσετε το πακέτο Swashbuckle.AspNetCore με την ακόλουθη εντολή:
Διαμορφώστε την υπηρεσία Swagger στο αρχείο startup.cs ως εξής:
Μέθοδος ConfigureServices
Διαμόρφωση μεθόδου
Δημιουργήστε έναν νέο ελεγκτή δοκιμής με τον ακόλουθο κώδικα:
Το αντικείμενο μοντέλου παραμέτρου παραμέτρου προϊόντος Δημιουργία ελεγκτή δοκιμής είναι το εξής:
Μετά την έναρξη του έργου, αποκτήστε πρόσβαση:http://localhost:18979/swagger/index.html, όπως φαίνεται στο παρακάτω σχήμα:
swagger.json Το περιεχόμενο έχει ως εξής:
{ "openapi": "3.0.1", "πληροφορίες": { "title": "Το API μου", "version": "v1" }, "μονοπάτια": { "/api/Δοκιμή/Δημιουργία": { "post": { "ετικέτες": [ "Δοκιμή" ], "requestBody": { "περιεχόμενο": { "application/json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } }, "κείμενο/json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } }, "application/*+json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } } } }, "απαντήσεις": { "200": { "description": "Επιτυχία", "περιεχόμενο": { "κείμενο/απλό": { "σχήμα": { "type": "συμβολοσειρά" } }, "application/json": { "σχήμα": { "type": "συμβολοσειρά" } }, "κείμενο/json": { "σχήμα": { "type": "συμβολοσειρά" } } } } } } } }, "συστατικά": { "σχήματα": { "Πληροφορίες": { "type": "αντικείμενο", "ιδιότητες": { "isDiscount": { "type": "δυαδική τιμή" }, "isVip": { "type": "δυαδική τιμή", "nullable": αληθές } }, "additionalProperties": ψευδής }, "Προϊόν": { "type": "αντικείμενο", "ιδιότητες": { "όνομα": { "type": "συμβολοσειρά", "nullable": αληθές }, "απενεργοποιημένο": { "type": "δυαδική τιμή" }, "πληροφορίες": { "$ref": "#/στοιχεία/σχήματα/πληροφορίες" } }, "additionalProperties": ψευδής } } }
}
Βρήκαμε ότι τόσο οι τύποι Boolean όσο και οι μηδενίσιμοι τύποι Boolean έχουν ως προεπιλογή: true,Στην καθημερινή ανάπτυξη, εάν το bool δεν έχει εκχωρηθεί, η προεπιλογή θα πρέπει να είναι false και ο τύπος null θα πρέπει να είναι προεπιλεγμένος σε null, προσπαθούμε να χρησιμοποιήσουμε το swagger για να προσομοιώσουμε την υποβολή, εάν οι παράμετροι δεν παρατηρηθούν,Τα ατυχήματα είναι επιρρεπή。 (Την περασμένη εβδομάδα, χρησιμοποίησα το swagger για να προσομοιώσω ότι μια παράμετρος bool ήταν αληθής από προεπιλογή, με αποτέλεσμα τα μηνύματα WeChat να προωθούνται σε όλους τους ανθρώπους.)
Πώς μπορώ να αντιστοιχίσω έναν δυαδικό τύπο σε false από προεπιλογή; Τι θα λέγατε για τους μηδενικούς τύπους που εκχωρούνται μηδενικοί;
Δημιουργήστε μια νέα κλάση που κληρονομεί από το ISchemaFilter και ο κώδικας είναι ο εξής:
Και όταν προσθέτετε την υπηρεσία swagger, προσθέστε το φίλτρο AddSwaggerGen ως εξής:
Για ορισμένα ειδικά πεδία bool, η προεπιλεγμένη τιμή πρέπει να οριστεί σε true και μπορεί να προστεθεί[ΠροεπιλεγμένηΤιμή(αληθής)]Τα χαρακτηριστικά είναι τα εξής:
{ "name": "συμβολοσειρά", "disabled": αληθές, "πληροφορίες": { "isDiscount": false, "isVip": null }
} swagger.json Ο φάκελος έχει ως εξής:
{ "openapi": "3.0.1", "πληροφορίες": { "title": "Το API μου", "version": "v1" }, "μονοπάτια": { "/api/Δοκιμή/Δημιουργία": { "post": { "ετικέτες": [ "Δοκιμή" ], "requestBody": { "περιεχόμενο": { "application/json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } }, "κείμενο/json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } }, "application/*+json": { "σχήμα": { "$ref": "#/συστατικά/σχήματα/Προϊόν" } } } }, "απαντήσεις": { "200": { "description": "Επιτυχία", "περιεχόμενο": { "κείμενο/απλό": { "σχήμα": { "type": "συμβολοσειρά" } }, "application/json": { "σχήμα": { "type": "συμβολοσειρά" } }, "κείμενο/json": { "σχήμα": { "type": "συμβολοσειρά" } } } } } } } }, "συστατικά": { "σχήματα": { "Πληροφορίες": { "type": "αντικείμενο", "ιδιότητες": { "isDiscount": { "type": "δυαδική τιμή", "default": false }, "isVip": { "type": "δυαδική τιμή", "default": null, "nullable": αληθές } }, "additionalProperties": ψευδής }, "Προϊόν": { "type": "αντικείμενο", "ιδιότητες": { "όνομα": { "type": "συμβολοσειρά", "nullable": αληθές }, "απενεργοποιημένο": { "type": "δυαδική τιμή", "default": true }, "πληροφορίες": { "$ref": "#/στοιχεία/σχήματα/πληροφορίες" } }, "additionalProperties": ψευδής } } }
} (Τέλος)
|