Son zamanlarda SpringMvc ve swagger-ui (v2) ile dinlendirici API'ler yazdım . Postacı'da İçe Aktarma işlevini fark ettim:
Öyleyse sorum şu, Postacının ihtiyaç duyduğu dosyayı nasıl oluşturacağım?
Swagger'a aşina değilim.
Yanıtlar:
PHP üzerinde çalışıyorum ve API'leri belgelemek için Swagger 2.0'ı kullandım. Swagger Belgesi anında oluşturulur (en azından PHP'de kullandığım şey budur). Belge, JSON biçiminde oluşturulur.
Örnek belge
{
"swagger": "2.0",
"info": {
"title": "Company Admin Panel",
"description": "Converting the Magento code into core PHP and RESTful APIs for increasing the performance of the website.",
"contact": {
"email": "jaydeep1012@gmail.com"
},
"version": "1.0.0"
},
"host": "localhost/cv_admin/api",
"schemes": [
"http"
],
"paths": {
"/getCustomerByEmail.php": {
"post": {
"summary": "List the details of customer by the email.",
"consumes": [
"string",
"application/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "email",
"in": "body",
"description": "Customer email to ge the data",
"required": true,
"schema": {
"properties": {
"id": {
"properties": {
"abc": {
"properties": {
"inner_abc": {
"type": "number",
"default": 1,
"example": 123
}
},
"type": "object"
},
"xyz": {
"type": "string",
"default": "xyz default value",
"example": "xyz example value"
}
},
"type": "object"
}
}
}
}
],
"responses": {
"200": {
"description": "Details of the customer"
},
"400": {
"description": "Email required"
},
"404": {
"description": "Customer does not exist"
},
"default": {
"description": "an \"unexpected\" error"
}
}
}
},
"/getCustomerById.php": {
"get": {
"summary": "List the details of customer by the ID",
"parameters": [
{
"name": "id",
"in": "query",
"description": "Customer ID to get the data",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Details of the customer"
},
"400": {
"description": "ID required"
},
"404": {
"description": "Customer does not exist"
},
"default": {
"description": "an \"unexpected\" error"
}
}
}
},
"/getShipmentById.php": {
"get": {
"summary": "List the details of shipment by the ID",
"parameters": [
{
"name": "id",
"in": "query",
"description": "Shipment ID to get the data",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Details of the shipment"
},
"404": {
"description": "Shipment does not exist"
},
"400": {
"description": "ID required"
},
"default": {
"description": "an \"unexpected\" error"
}
}
}
}
},
"definitions": {
}
}
Bu, Postacı'ya aşağıdaki şekilde aktarılabilir.
Ayrıca 'Bağlantıdan İçe Aktar'ı da kullanabilirsiniz. Swagger veya herhangi bir API Belgesi aracından API'lerin JSON formatını oluşturan URL'yi buraya yapıştırın.
Bu benim Belge (JSON) oluşturma dosyam. PHP'de. Swagger ile birlikte JAVA hakkında hiçbir fikrim yok.
<?php
require("vendor/autoload.php");
$swagger = \Swagger\scan('path_of_the_directory_to_scan');
header('Content-Type: application/json');
echo $swagger;
Kabul edilen cevap doğru, ancak için tüm adımları yeniden yazacağım java
.
Şu anda kullanıyorum Swagger V2
ile Spring Boot 2
ve basit 3 adım süreç.
1. Adım:pom.xml
Dosyaya gerekli bağımlılıkları ekleyin . İkinci bağımlılık isteğe bağlıdır, yalnızca ihtiyacınız olduğunda kullanın Swagger UI
.
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2. Adım: Yapılandırma sınıfı ekleyin
@Configuration
@EnableSwagger2
public class SwaggerConfig {
public static final Contact DEFAULT_CONTACT = new Contact("Usama Amjad", "https://stackoverflow.com/users/4704510/usamaamjad", "hello@email.com");
public static final ApiInfo DEFAULT_API_INFO = new ApiInfo("Article API", "Article API documentation sample", "1.0", "urn:tos",
DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<VendorExtension>());
@Bean
public Docket api() {
Set<String> producesAndConsumes = new HashSet<>();
producesAndConsumes.add("application/json");
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(DEFAULT_API_INFO)
.produces(producesAndConsumes)
.consumes(producesAndConsumes);
}
}
3. Adım: Kurulum tamamlandı ve şimdi API'lericontrollers
@ApiOperation(value = "Returns a list Articles for a given Author", response = Article.class, responseContainer = "List")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Success"),
@ApiResponse(code = 404, message = "The resource you were trying to reach is not found") })
@GetMapping(path = "/articles/users/{userId}")
public List<Article> getArticlesByUser() {
// Do your code
}
Kullanım:
Dokümantasyonunuza http://localhost:8080/v2/api-docs
sadece kopyalayarak erişebilir ve koleksiyonu içe aktarmak için Postacı'ya yapıştırabilirsiniz.
İsteğe bağlı Swagger UI: Ayrıca başka bir dinlenme istemcisi olmadan bağımsız kullanıcı arayüzünü de kullanabilirsiniz http://localhost:8080/swagger-ui.html
ve oldukça iyidir, belgelerinizi herhangi bir güçlük çekmeden barındırabilirsiniz.
Bunu doğrulamak için çevrimiçi olarak bazı örnek swagger dosyalarını da edinebilirsiniz (havalı belgenizde hatalar varsa).