Предисловие
Swagger, китайский смысл «ласточки». Это мощная структура API, его интеграция очень проста, не только предоставляет онлайн -обзор документации, но и
Также предоставляется онлайн -документация. Кроме того, Swagger легко создать API в стиле RESFFUL.
Swagger - это набор инструментов с открытым исходным кодом, созданными вокруг спецификации OpenAPI, чтобы помочь разработать, создавать, документировать и использовать API REST.
Проще говоря, он, по -видимому, облегчает тестирование интерфейса Restful в фоновом режиме и реализует динамические обновления, когда мы находимся в фоновом интерфейсе.
После изменения Swagger может автоматически обновляться без необходимости поддерживать этот интерфейс для тестирования, как вы думаете.
Чугггер указывает на аннотацию, что интерфейс будет генерировать документ, включая имя интерфейса, метод запроса, параметры, возвратную информацию и т. Д.
<depervice> <groupid> io.springfox </groupid> <artifactid> springfox-swagge2 </artifactid> <sersive> 2.7.0 </version> </dependency> <dependency> <groupid> io.springfox </GroupD> <artifactid> springfox-swager-uii </artifactid> </Ground> </artifactid> springfox-swager-ui </artifactid> </GroupD> </artifactid> springfox-swager-ui
Благодаря аннотации @Configuration, это указывает на то, что это класс конфигурации, а @enabswager2 включает в себя Swagger2.
APIINFO () Конфигурация некоторая основная информация. APIS () указывает, что отсканированный пакет будет генерировать документ.
После создания Docket Bean через функцию Createrestapi Apiinfo () использует основную информацию API (эта основная информация будет отображаться на странице документа). Функция SELECT () возвращает экземпляр ApiselectorCuilder, чтобы управлять тем, какие интерфейсы подвергаются чванству для отображения. В этом примере используется указанный путь отсканированного пакета для определения. Swagger будет сканировать все API, определенные контроллером в рамках пакета, и генерирует содержание документа (кроме запроса, указанного @Apiignore).
пакет com.lance.learn.springbootswagger.configuration; импорт org.springframework.context.annotation.bean; импорт org.springframework.context.annotation.configuration; импорт Springfox.documentation.Builders.ApiinFoBuilder; импорт Springfox.Documents.Builders.ApiinFoBuilder; импорт. Springfox.documentation.Builders.RequestHandLerselectors; Import Springfox.documentation.Service.Apiinfo; импорт Springfox.documentation.service.contact; импорт Springfox.documentation.spi.documentationtype; импорт springfox.documentation.spring.web.plugnationtype; импорт Springfox.documentation.spring.web. springfox.documentation.swagger2.annotations.enableswger2;/*** @author Lance (zyh)* @function Swagger Startup Configuration Class* @date 2018-07-09 21:24*/ @configuration @enableswger2public Class SwaggerConfiguration {/** Swager2 File File, вы можете какая-то конфигурация. etc. * @return */ @Bean public Docket createRestfulApi(){ return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() .apis(RequestHandlerSelectors.basePackage("com.lance.learn.springbootswagger.controller")) //Expose the package path of the interface address.paths (pathselectors.any ()) .build (); } /** * Создайте подробную информационную функцию документа API, примечание, какая аннотация относится к * @return * /private apiinfo apiinfo () {return new apiinfobuilder () // title.title («Spring Boot Test для создания Restful API с использованием Swagegle2») //create.contact ("Связанный с контактом" lanvetobigebigebigeabigeabig. "http://www.cnblogs.com/zhangyinhua/", "[email protected]")) // номер версии ("1.0") // Описание ("api description") .build (); }} Описания в основном поступают от функций именования и т. Д., И не являются удобными для пользователя. Обычно нам нужно добавить несколько инструкций, чтобы обогатить содержание документа.
Как показано ниже, мы добавляем инструкции в API через аннотацию @Apioperation и используем @apiimplicitparams и @apiimplicitarparam
Аннотация для добавления описания в параметры.
1) Пример 1
пакет com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.book; import io.swagger.annotations.apiimplicitaram; импорт io.swagger.annotations.apiimplicitaparams; import io.swager.annotations.apiimplitisparams; io.swagger.annotations.apioperation; import org.springframework.web.bind.annotation. *; import springfox.documentation.annotation.apiignore; импорт java.util. *;/** * @author Lance (zyh) * @function * @date 2018-07-09 21 "/bookcurd") public class bookcontroller {map <long, book> books = collections.synchronizedmap (new hashmap <long, book> ()); @ApioPeration (value = "Get Book List", Notes = "Get Book List") @Requestmapping (value = {""}, method = requestMethod.get) public list <book> getBook () {list <book> book = new ArrayList <> (books.values ()); возвращение книги; } @Apioperation (value = "Создать книгу", notes = "Создать книгу") @apiimplicitparam (name = "book", value = "книга Defined Entity", обязательно = true, datatype = "book") @requestmapping (value = ", method = requestmethod.post) public postbook (@requestbodebody book) вернуть "успех"; } @Apioperation (value = "Получить подробную информацию о книге", Notes = "Получить подробную информацию, основанную на идентификаторе URL") @apiimplicitarparam (name = "id", value = "id", обязательный = true, datatype = "long", paramtype = "path") @requestmapping (value = "/}", methodmetmethod wipublible @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @pebilitiable @publibabite) Long Id) {return books.get (id); } @ApiOperation(value="Update information", notes="Specify update book information based on the url's id") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "Book ID", required = true, dataType = "Long",paramType = "path"), @ApiImplicitParam(name = "book", value = "book entity book", required = true, datatype = "book")}) @requestmapping (value = "/{id}", method = requestmethod.put) public String putuser (@pathvarible Long Id, @Requestbody Book Book) {book book1 = books.get (id); book1.setname (book.getName ()); book1.setprice (book.getprice ()); books.put (id, book1); вернуть "успех"; } @Apioperation (value = "Delete Book", notes = "Укажите удаление книг, основанную на идентификаторе URL") @apiimplicitarparam (name = "id", value = "book id", обязательный = true, datatype = "long", paramtype = "path") @Requestmapping (value = "/{id}", method -requestMethod.delete) @requestmapping (value = "/{id}", requestMethod. DeleteUser (@pathvariable long id) {books.remove (id); вернуть "успех"; } @Apiignore // Используйте эту аннотацию, чтобы игнорировать этот API @Requestmapping (value = "/hi", method = requestMethod.get) public String jsontest () {return "Hi You!"; }}2) Пример 2
Пакет com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.user; импорт io.swagger.annotations.apiimpliciteParam; import io.swagger.annotations.apiimplicitaparams; import.swager.annotation.Antations.Apiimplations.ApiimplicitAparams; import.swager.annotation.Antations.ApiimplationsParams; io.swagger.annotations.apioperation; импорт org.springframework.web.bind.annotation. *; import java.util. *;/** * @author lance (zyh) * @funct Map <long, user> users = collections.synchronizedmap (новый Hashmap <long, user> ()); @Apioperation (value = "Get User List", notes = ") @Requestmapping (value = {" "}, method = requestMethod.get) public list <user> getUserList () {list <user> r = new ArrayList <user> (users.values ()); возврат R; } @Apioperation (value = "Создать пользователь", notes = "Создать пользователя из пользователя") @apiimplicitparam (name = "user", value = "Пользовательский пользователь Пользователь объекта", обязательный = true, dataType = "user") @Requestmapping (value = ", method = requestMethod.post) propulser (@requesty user user user) {user usemetid.post) propuser (@Requestoby user) {user usemethid; вернуть "успех"; } @Apioperation (value = "GET пользователя", notes = "Получить данные пользователя на основе идентификатора URL") @ApiimplicitAparam (name = "id", value = "идентификатор пользователя", обязательный = true, dataType = "long") @requestmapping (value = "/{id}", метод = requestmethod.get) public uerfempation (@patable long lete) users.get (id); } @Apioperation (value = "Обновление данных пользователя", notes = "указать объекты обновления на основе идентификатора URL и обновить данные пользователя на основе передаваемой информации пользователя") @Apiimplicitarparams ({@ApiimplicitAparam (name = "id", value = "user id, trey = true, dataType =" long "), @ApiImplicate (vally valueDectAiltar пользователь ", обязательный = true, dataType =" user ")}) @Requestmapping (value ="/{id} ", method = requestMethod.put) public String putuser (@pathvariable Long Id, @Requestbody User User) {user u = new user (); users.put (id, u); вернуть "успех"; } @ApiOperation(value="Delete user", notes="Specify delete object according to the id of the url") @ApiImplicitParam(name = "id", value = "User ID", required = true, dataType = "Long") @RequestMapping(value="/{id}", method=RequestMethod.DELETE) public String deleteUser(@PathVariable Long id) { users.remove (id); вернуть "успех"; }}https://github.com/lancetobigdata/springbootlearning/tree/develop/springboot-swagger
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.