2015-10-26 21 views
15

Kịch bản của tôi là như sau.Cách tạo mã máy khách java cho tài liệu REST API swagger

Tôi có một vênh vang .json Eg .: http://petstore.swagger.io/v2/swagger.json Tôi muốn sử dụng một khách hàng java tạo ra cho REST API trên, như:

PetApi petApi = new PetApi(); 
Pet pet = new Pet; 
pet.setName("cica"); 
pet.setId(1L); 
petApi.addPet(pet); 
System.out.println(petApi.getById(1L));` 

Expexted đầu ra: cica và vật nuôi mới được lưu trữ theo REST API implmentation.

tôi đã tạo thành công máy chủ sơ khai cho petstore bằng lệnh:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
    -i http://petstore.swagger.io/v2/swagger.json 
    -l spring-mvc 
    -o samples/server/petstore/spring-mvc 

Nhưng mã dự án maven đây là một mã máy chủ. Nó có các chú thích như @RequestMapping trong PetApi.java và cũng có một số WebMvcConfiguration.class.

Tôi không muốn có máy chủ. Tôi muốn có một thư viện ứng dụng khách cho REST API của nhà kho.

Có công cụ nào có thể tạo thư viện khách hàng thích hợp cho tôi không? Tôi có nên sửa đổi các máy chủ-stub, do đó nó có tất cả các mô hình hoặc tôi nên sử dụng một springRestTemplate đơn giản?

Cảm ơn câu trả lời!

Trả lời

9

Tôi nghĩ rằng bạn không sử dụng đúng giá trị cho tham số -l của Swagger Codegen (bạn sử dụng spring-mvc là công nghệ phía máy chủ). Bạn có thể thử sử dụng giá trị java.

Bạn cũng có thể nhận thấy rằng có một công cụ, Restlet Studio, cho phép tạo mã từ nội dung Swagger. Đối với Java, nó chủ yếu dựa vào khung công tác Restlet nhưng tôi nghĩ rằng nó có thể phù hợp với nhu cầu của bạn.

Hy vọng nó giúp bạn, Thierry

+1

Cảm ơn cho câu trả lời. Tôi không thể hiểu được làm thế nào tôi có thể bỏ lỡ phần này trong hướng dẫn nhưng đây là câu trả lời chính xác mà tôi cần. –

8

Thay vì sử dụng JAR, bạn cũng có thể sử dụng để tạo ra https://generator.swagger.io SDK (Java, Ruby, PHP, vv) trực tuyến mà không cần cài đặt bất cứ điều gì. Dưới đây là một ví dụ:

curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

và đây là một phản ứng mẫu:

{"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"} 

Sau đó bạn có thể tải SDK nén từ liên kết.

Đối với tùy chọn thêm về tùy biến đầu ra của https://generator.swagger.io, vui lòng tham khảo https://github.com/swagger-api/swagger-codegen#online-generators

(Swagger Generator là một phần của dự án Swagger codegen (miễn phí, mã nguồn mở) mà bạn có thể chạy máy phát điện Swagger địa phương của bạn cũng)

Kể từ tháng 7 năm 2017, trình tạo máy khách Java API hỗ trợ các thư viện HTTP sau: Jersey 1.x & 2.x, trang bị thêm 1.x & 2.x, okhttp, đặt chuyện, RESTEasy, RestTemplate

5

Đối với kịch bản của bạn lệnh của bạn sẽ trông như thế này

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
-i http://petstore.swagger.io/v2/swagger.json 
-l java 
-o samples/server/petstore/spring-mvc 

Các tùy chọn khác để chuyển đổi vênh vang để Jave là:

Mặc dù với dự án GitHub đó là tùy thuộc vào bạn để quyết định thư viện (jersey, jersey2, okhttp-gson, vv) để sử dụng khi chuyển đổi vênh vang Java client hoặc mã máy chủ. Với generator.swagger.io bạn cũng có thể decide which library to use. Có thể có enhancement to editor.swagger.io để có thể chọn thư viện để sử dụng. Để xem xét là các tùy chọn swagger.io là hoàn toàn miễn phí, trong khi Restlet và APIMATIC là freemium.

+1

editor.swagger.io sử dụng generator.swagger.io, cũng được powerd bởi dự án codegen swagger, để tạo ra các máy khách API, các nhánh máy chủ và tài liệu API. –

+0

@ wing328 Bạn nói đúng và tôi biết rằng nó vẫn tạo ra sự khác biệt nếu bạn sử dụng dự án chuyển đổi mã vạch hoặc phiên bản trực tuyến (generator.swagger.io). Trực tuyến, bạn không thể chọn thư viện nào nên được sử dụng để chuyển đổi. – Huber

+0

Bạn có thể. Vui lòng tham khảo https://github.com/swagger-api/swagger-codegen#online-generators về cách chuyển các tùy chọn khác nhau để tùy chỉnh đầu ra. Đối với editor.swagger.io, có một cuộc thảo luận để thêm một menu để tùy chỉnh đầu ra: https://github.com/swagger-api/swagger-editor/issues/713 –

-4

Mặc dù trình tạo dao găm tạo ra một SDK Java, SDK của APIMATIC khá trưởng thành, chi tiết và linh hoạt hơn cho Swagger Gen. Bạn nên thử máy phát điện APIMATIC sdk, bạn sẽ thích nó.

-1

Có lẽ cách nhanh nhất và dễ nhất để làm điều đó:

  1. wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
  2. java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>

Thông tin thêm here

0

Chỉ cần một phần mở rộng ngớ ngẩn để @wing328's answer.

curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

Nếu nó kết quả trong lỗi (vấn đề chứng chỉ SSL) này

curl: (60) SSL certificate problem: unable to get local issuer certificate 
More details here: https://curl.haxx.se/docs/sslcerts.html 

Thêm một switch -k cuộn tròn. Ví dụ:

curl -k -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java 

đáp ứng

{"code":"7e542952-5385-4e34-8cf6-6196722fb18b","link":"https://generator.swagger.io/api/gen/download/7e542952-5385-4e34-8cf6-6196722fb18b"} 

Sending hoàn chỉnh vênh vang đặc tả JSON tải trọng thay vì URL

Thay vì sử dụng swaggerUrl với một URL đến OpenAPI/Swagger spec, bạn có thể cũng bao gồm thông số kỹ thuật trong tải trọng JSON với thông số kỹ thuật, ví dụ

{ 
    "options": {}, 
    "spec": { 
    "swagger": "2.0", 
    "info": { 
     "version": "1.0.0", 
     "title": "Test API" 
    }, 
    ... 
    } 
} 

More Info: Official Doc

+0

Tôi không nghĩ rằng điều này có liên quan đến chủ đề. Tôi nghĩ rằng việc sử dụng hoặc thậm chí cài đặt lệnh 'curl' trên các hệ thống UNIX là một câu hỏi khác. –

+0

@ csikos.balint Nó có liên quan bởi vì khi tôi đã thử, nó dẫn đến lỗi chứng chỉ ... Tôi đã không thêm tùy chọn ngẫu nhiên của curl ở đây. –

Các vấn đề liên quan