स्वैगर एपीआई प्रलेखन से पीडीएफ उत्पन्न करें


93

मैंने स्वैगर UI का उपयोग अपने REST वेबसर्विस को दिखाने और सर्वर पर होस्ट करने के लिए किया है।

हालांकि स्वैगर की इस सेवा को केवल एक विशेष सर्वर पर ही एक्सेस किया जा सकता है। अगर मैं ऑफ़लाइन काम करना चाहता हूं, तो क्या कोई जानता है कि मैं स्वैगर यूआई का उपयोग करके एक स्थिर पीडीएफ कैसे बना सकता हूं और इसके साथ काम कर सकता हूं? इसके अतिरिक्त एक पीडीएफ उन लोगों के साथ साझा करना आसान है जिनके पास सर्वर तक पहुंच नहीं है।

बहुत धन्यवाद!

जवाबों:


39

आसान तरीका: ब्राउज़र प्रिंटिंग / पूर्वावलोकन का उपयोग करना

  1. संपादक फलक छिपाएँ
  2. प्रिंट पूर्वावलोकन (मैंने फ़ायरफ़ॉक्स का इस्तेमाल किया, अन्य भी ठीक हैं)
  3. इसका पेज सेटअप बदलें और पीडीएफ पर प्रिंट करें

यहाँ छवि विवरण दर्ज करें


सरल! प्रलेखन काफी अच्छी तरह से आता है।
शातिन

1
तुम भी दो प्रलेखन डिजाइन के बीच चयन कर सकते हैं जब तक दो स्वैगर सेवाएं हैं: editor.swagger.io (नया) और editor2.swagger.io (पिछले)!
naXa

प्रभावी लेकिन हानिपूर्ण सेंसर स्वैगर HTML UI में कई टैब हैं, एक POST / PUT विधि के मापदंडों के लिए आपको मॉडल टैब और उदाहरण मूल्य टैब के बीच चयन करना होगा, फिर मुद्रित-टू-पीडीएफ संस्करण में उनमें से एक हमेशा के लिए छिपा हुआ है :(
chrisinmtown

यह मेरे लिए काम नहीं किया। प्रत्येक समापन बिंदु पृष्ठ के अंत के साथ कट जाएगा (कोई फर्क नहीं पड़ता कि मैं किस पृष्ठ सेटअप का उपयोग करता था)। अगला पृष्ठ अगले समापन बिंदु ब्लॉक के शीर्ष पर शुरू होगा। शायद इस जवाब के लिखे जाने के बाद से कुछ बदल गया है।
किला-बाइट

मैं अभी भी यह काम करने योग्य है, आप मार्जिन को अनुकूलित करने की आवश्यकता हो सकती है। से प्रयास करें editor.swagger.io
Osify

33

मैंने https://github.com/springfox/springfox और https://github.com/RobWin/swagger2markup का उपयोग करके एक तरीका निकाला

प्रलेखन को लागू करने के लिए स्वैगर 2 का उपयोग किया।


नमस्ते, मैं भी स्वैगर का उपयोग कर ऑफ़लाइन प्रलेखन उत्पन्न करने की कोशिश कर रहा हूँ। क्या आप स्वैगर प्रलेखन उत्पन्न करने में सक्षम हैं ??
सुनील आरके

हाँ, मैंने उदाहरण परियोजनाओं का उपयोग किया और उनमें अपने वेबस्पोर्ट कोड को एकीकृत किया और दस्तावेज तैयार करने में सक्षम था।
अमन मोहम्मद

1
क्या आप मुझे संक्षेप में बता सकते हैं कि मैं अपनी वेब सेवा को उन उदाहरणों में कैसे एकीकृत कर सकता हूं, जिनका आपने ऊपर उल्लेख किया है।
सुनील आरके

Swagger2markup प्रोजेक्ट को REST API के JSON इनपुट की आवश्यकता है। यदि आप उस ग्रेड प्रोजेक्ट को डाउनलोड करते हैं और अपने API विवरणों के साथ उसमें swagger.json फ़ाइल को बदलते हैं और फिर Swagger2MarkupConverterTest JUnit विधि चलाते हैं: testSwagger2HtmlConcortersion, यह आपके लिए प्रोजेक्ट बिल्ड / डॉक्स / जनरेट / asciidocAsString के HTML का निर्माण करना चाहिए। तो दूसरे शब्दों में, 2 चीजें हैं। 1) सबसे पहले स्वैगर एडिटर का उपयोग करके अपने REST API के लिए JSON फॉर्मेट तैयार करें। 2) उस JSON प्रारूप का उपयोग करके, आप एपीआई के स्टैंडअलोन एचटीएमएल प्रलेखन का उत्पादन करने के लिए स्वैगर 2मार्कअप परियोजना का उपयोग कर सकते हैं
अमन मोहम्मद

22

आप अपनी REST परियोजना को संशोधित कर सकते हैं, ताकि परियोजना के निर्माण पर आवश्यक स्थैतिक दस्तावेजों (html, pdf आदि) का उत्पादन कर सकें।

यदि आपके पास जावा मावेन परियोजना है तो आप नीचे पोम स्निपेट का उपयोग कर सकते हैं। यह पीडीएफ़ और HTML डॉक्यूमेंट बनाने के लिए प्लगइन्स की एक श्रृंखला का उपयोग करता है (परियोजना के रीस्ट संसाधनों में)।

  1. rest-api -> swagger.json: स्वैगर-मावेन-प्लगइन
  2. swagger.json -> Asciidoc: swagger2markup-maven-plugin
  3. Asciidoc -> PDF: asciidoctor-maven-plugin

कृपया ध्यान रखें कि निष्पादन का क्रम, एक प्लगइन के आउटपुट के बाद से, अगले इनपुट बन जाता है:

<plugin>
    <groupId>com.github.kongchen</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>3.1.3</version>
    <configuration>
        <apiSources>
            <apiSource>
                <springmvc>false</springmvc>
                <locations>some.package</locations>
                <basePath>/api</basePath>
                <info>
                    <title>Put your REST service's name here</title>
                    <description>Add some description</description>
                    <version>v1</version>
                </info>
                <swaggerDirectory>${project.build.directory}/api</swaggerDirectory>
                <attachSwaggerArtifact>true</attachSwaggerArtifact>
            </apiSource>
        </apiSources>
    </configuration>
    <executions>
        <execution>
            <phase>${phase.generate-documentation}</phase>
            <!-- fx process-classes phase -->
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>io.github.robwin</groupId>
    <artifactId>swagger2markup-maven-plugin</artifactId>
    <version>0.9.3</version>
    <configuration>
        <inputDirectory>${project.build.directory}/api</inputDirectory>
        <outputDirectory>${generated.asciidoc.directory}</outputDirectory>
        <!-- specify location to place asciidoc files -->
        <markupLanguage>asciidoc</markupLanguage>
    </configuration>
    <executions>
        <execution>
            <phase>${phase.generate-documentation}</phase>
            <goals>
                <goal>process-swagger</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>1.5.3</version>
    <dependencies>
        <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-pdf</artifactId>
            <version>1.5.0-alpha.11</version>
        </dependency>
        <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby-complete</artifactId>
            <version>1.7.21</version>
        </dependency>
    </dependencies>
    <configuration>
        <sourceDirectory>${asciidoctor.input.directory}</sourceDirectory>
        <!-- You will need to create an .adoc file. This is the input to this plugin -->
        <sourceDocumentName>swagger.adoc</sourceDocumentName>
        <attributes>
            <doctype>book</doctype>
            <toc>left</toc>
            <toclevels>2</toclevels>
            <generated>${generated.asciidoc.directory}</generated>
            <!-- this path is referenced in swagger.adoc file. The given file will simply 
                point to the previously create adoc files/assemble them. -->
        </attributes>
    </configuration>
    <executions>
        <execution>
            <id>asciidoc-to-html</id>
            <phase>${phase.generate-documentation}</phase>
            <goals>
                <goal>process-asciidoc</goal>
            </goals>
            <configuration>
                <backend>html5</backend>
                <outputDirectory>${generated.html.directory}</outputDirectory>
                <!-- specify location to place html file -->
            </configuration>
        </execution>
        <execution>
            <id>asciidoc-to-pdf</id>
            <phase>${phase.generate-documentation}</phase>
            <goals>
                <goal>process-asciidoc</goal>
            </goals>
            <configuration>
                <backend>pdf</backend>
                <outputDirectory>${generated.pdf.directory}</outputDirectory>
                <!-- specify location to place pdf file -->
            </configuration>
        </execution>
    </executions>
</plugin>

Asciidoctor प्लगइन काम करने के लिए एक .adoc फ़ाइल के अस्तित्व को मानता है। आप एक ऐसा बना सकते हैं जो केवल उन लोगों को इकट्ठा करता है जो swagger2markup प्लगइन द्वारा बनाए गए थे:

include::{generated}/overview.adoc[]
include::{generated}/paths.adoc[]
include::{generated}/definitions.adoc[]

यदि आप चाहते हैं कि आपका जेनरेट किया गया HTML डॉक्यूमेंट आपकी युद्ध फाइल का हिस्सा बन जाए, तो आपको यह सुनिश्चित करना होगा कि यह शीर्ष स्तर पर मौजूद है - WEB-INF फ़ोल्डर में स्टैटिक फाइल्स को सर्व नहीं किया जाएगा। आप इसे मावेन-युद्ध-प्लगइन में कर सकते हैं:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <warSourceDirectory>WebContent</warSourceDirectory>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <webResources>
            <resource>
                <directory>${generated.html.directory}</directory>
            <!-- Add swagger.pdf to WAR file, so as to make it available as static content. -->
            </resource>
            <resource>
                <directory>${generated.pdf.directory}</directory>
            <!-- Add swagger.html to WAR file, so as to make it available as static content. -->
            </resource>
        </webResources>
    </configuration>
</plugin>

युद्ध प्लगइन उत्पन्न प्रलेखन पर काम करता है - जैसे, आपको यह सुनिश्चित करना होगा कि उन प्लगइन्स को पहले चरण में निष्पादित किया गया है।


हाय @ हर्वियन। बहुत बढ़िया जवाब। मैं अब तक आपके एंकर का उपयोग कर सकता था। मेरे पास एक ही नाम के साथ दो कक्षाएं हैं लेकिन विभिन्न पैकेजों में। हालाँकि swagger.json में उनमें से केवल एक के लिए परिभाषा है। दूसरा गायब है
एडमंड

जब तक मैंने निम्नलिखित 1 नहीं किया तब तक @Hervian को त्रुटियाँ मिलीं। ऊपर से सामग्री वाली फ़ाइल src / main / asciidoc / swagger.adoc बनाई गई। 2) पोम में इन गुणों को जोड़ा गया: <phase.generate-प्रलेखन> प्रक्रिया-वर्ग </phase.generate-documentation> <उत्पन्न.asciidoc.directory> $ {project.build.directory} / api-gen </ generate। asciidoc.directory> फिर "mvan install" चलाएं और मुझे कोई mvan या प्लगइन त्रुटियां नहीं दिखतीं, लेकिन केवल सिंहावलोकन .adoc फ़ाइल में कोई सामग्री है; परिभाषाएँ .adoc और paths.adoc फ़ाइलें खाली रहती हैं। सलाह दें।
क्रिसनटाउन

15

मैंने एक वेब साइट बनाई https://www.swdoc.org/ जो विशेष रूप से समस्या का समाधान करती है। तो यह swagger.json -> Asciidoc, Asciidoc -> pdfजवाबों में सुझाए अनुसार परिवर्तन को स्वचालित करता है। इसका लाभ यह है कि आपको इंस्टॉलेशन प्रक्रियाओं से गुजरने की आवश्यकता नहीं है। यह url के रूप में या सिर्फ एक कच्चे जोंस के रूप में एक विशेष दस्तावेज को स्वीकार करता है। प्रोजेक्ट C # में लिखा गया है और इसका पेज https://github.com/Irdis/SwDoc है

संपादित करें

यहाँ अपने json स्पेक्स को मान्य करना एक अच्छा विचार हो सकता है: http://editor.swagger.io/ यदि आपको SwDoc से कोई समस्या हो रही है, जैसे कि pdf अधूरी उत्पन्न की जा रही है।


3
thx, हाँ, यह बहुत अच्छा है, मैं इसे अपने कार्य परियोजनाओं के लिए उपयोग करता हूँ। मैं अपने खाली समय पर ओपनैपी 3.0 का समर्थन करने के लिए कुछ कोड लिखने की सोच रहा हूं।
इरदिस

2
उपकरण के लेखकों के लिए सभी महिमा इस पर निर्भर करती है,
inc

@ दोस्तों मैंने लिंक का उपयोग करने की कोशिश की। यह स्वैगर 2.0 डॉक को पार्स करने की अनुमति देता है लेकिन मैं जो दस्तावेज़ प्रदान कर रहा हूं वह ओपन एपीआई 3.0 का है और यह दस्तावेज़ उत्पन्न करने में असमर्थ है।
नरकवाहिनी

मैंने स्वैगर 3+ की कोशिश की - ठीक काम करता है, यह हालांकि टिप्पणी के लिए कच्चे HTML दिखाता है ...
साशा बॉन्ड

यह एक महान उपकरण है! अगर आपको कभी भी इस तरह की समस्याएँ हैं जैसे कि मेरे पास (जैसे पीडीएफ़ अपूर्ण होना) है, तो यहां अपना जस्स चिपकाएँ: editor.swagger.io को स्वचालित रूप से मान्य किया जाए, मुद्दों को ठीक किया जाए और आप स्वैडोक टूल पर वापस जाएं और इसे ठीक से जनरेट करना अच्छा होगा इस समय।
थेल्स वालियास

9

चेकआउट https://mrin9.github.io/RapiPdf बहुत सारे अनुकूलन और स्थानीयकरण सुविधा के साथ एक कस्टम तत्व।

डिस्क्लेमर: मैं इस पैकेज का लेखक हूं


2
बस परीक्षण किया गया है, लेकिन परीक्षण युक्ति (पेटस्टोर) के साथ "जनरेट पीडीएफ" पर क्लिक करने के बाद मुझे कोई प्रतिक्रिया नहीं मिली है?
--हिमल

1
जब मैं मैक / क्रोम, मैक / फ़ायरफ़ॉक्स, मैक / सफारी और विंडोज़ / क्रोम पर परीक्षण किया तो @imehl यह ठीक काम करता है। यह केवल वेब-ब्राउज़र पर काम करता है जो क्रोम, फ़ायरफ़ॉक्स और सफारी जैसे वेब-घटकों का समर्थन करता है। यदि अभी भी समस्याओं का सामना कर रहे हैं, तो कृपया उन्हें Github github.com/mrin9/RapiPdf पर
Mrinmoy

@ मॉर्मोय में मुझे imehl जैसी ही समस्या थी, इसने नया टैब खोला लेकिन यह imediately (ubuntu 18.04 + firefox / chrome दोनों एक ही परिणाम) बंद कर दिया। फिर मैंने इसे खिड़कियों पर किया और यह एक आकर्षण की तरह काम किया। इस उपकरण के लिए धन्यवाद, यह बहुत बढ़िया है।
डबक्स

3
@ डबक्स ने उबंटू पर कभी भी परीक्षण नहीं किया, लेकिन एक स्थिति यह है कि मुझे पता है कि लोगों को उसी मुद्दे का सामना करना पड़ता है जैसा आपने समझाया था, और यह तब है जब आपके पास ब्राउज़र पर अवरोधक या पॉपअप अवरोधक के रूप में कोई सक्रिय है
मृण्मय

@Mrinmoy आप सही हैं, मेरे पास एक विज्ञापन-अवरोधक था, यह उस वजह से था, ओएस के कारण नहीं।
डबक्स

1

मेरे लिए सबसे आसान उपाय पोस्टमैन में स्वैगर (v2) आयात करना और फिर वेब दृश्य पर जाना था। वहां आप "सिंगल कॉलम" दृश्य चुन सकते हैं और ब्राउज़र को पीडीएफ में प्रिंट करने के लिए उपयोग कर सकते हैं। एक स्वचालित / एकीकृत समाधान नहीं है, लेकिन एकल-उपयोग के लिए अच्छा है। यह Editor2.swagger.io से छपाई की तुलना में कागज-चौड़ाई को बहुत बेहतर तरीके से संभालता है, जहां स्क्रॉलबार सामग्री के कुछ हिस्सों को छिपाते हैं।


1
इसका उपयोग करने की कोशिश की गई है, लेकिन वेबपेज के माध्यम से प्रिंट कई लिंक और अन्य जानकारी भी जोड़ता है।
नरकवाह

हां, मुझे इसका उल्लेख करना चाहिए था। मेरे इस्तेमाल के लिए कोई समस्या नहीं थी।
साइमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.