swagger and restful api 参考

 

http://git.oschina.net/redArmy/spring-cloud-books/blob/master/spring-cloud-provider-book/src/main/java/com/wujunshen/controller/BookController.java
    /**
     * @param book 传入的book对象实例 

* @return 成功或失败信息,json格式封装 

*/ 

@PostMapping(value = "/api/books", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) 

@ApiOperation(value = "添加某本书籍", httpMethod = "POST", 

notes = "添加成功返回bookId", 

response = BaseResultVo.class 

) 

@ApiResponses(value = { 

@ApiResponse(code = 200, message = "Success", response = BaseResultVo.class), 

@ApiResponse(code = 401, message = "Unauthorized"), 

@ApiResponse(code = 403, message = "Forbidden"), 

@ApiResponse(code = 404, message = "Not Found"), 

@ApiResponse(code = 500, message = "Failure")}) 

public BaseResultVo saveBook(@Validated @ApiParam(value = "添加的某本书籍信息", required = true) @RequestBody Book book) { 

BaseResultVo baseResultVo = new BaseResultVo(); 

baseResultVo.setData(bookService.saveBook(book)); 

baseResultVo.setCode(ResultStatusCode.OK.getCode()); 

baseResultVo.setMessage(ResultStatusCode.OK.getMessage()); 

return baseResultVo; 

} 

/** 

* @return 成功或失败信息,json格式封装 

*/ 

@GetMapping(value = "/api/books", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) 

@ApiOperation(value = "查询所有书籍", httpMethod = "GET", 

notes = "查询所有书籍", 

response = BaseResultVo.class 

) 

@ApiResponses(value = { 

@ApiResponse(code = 200, message = "Success", response = BaseResultVo.class), 

@ApiResponse(code = 401, message = "Unauthorized"), 

@ApiResponse(code = 403, message = "Forbidden"), 

@ApiResponse(code = 404, message = "Not Found"), 

@ApiResponse(code = 500, message = "Failure")}) 

public BaseResultVo getBooks() { 

Books books = bookService.getBooks(); 

BaseResultVo baseResultVo = new BaseResultVo(); 

if ((books != null) && (!books.getBookList().isEmpty())) { 

baseResultVo.setData(books); 

baseResultVo.setCode(ResultStatusCode.OK.getCode()); 

baseResultVo.setMessage(ResultStatusCode.OK.getMessage()); 

} else { 

baseResultVo.setCode(ResultStatusCode.DATA_QUERY_ERROR.getCode()); 

baseResultVo.setData("Query books failed"); 

baseResultVo.setMessage(ResultStatusCode.DATA_QUERY_ERROR.getMessage()); 

} 

return baseResultVo; 

} 

/** 

* @param bookId 传入的bookId 

* @return 成功或失败信息,json格式封装 

*/ 

@GetMapping(value = "/api/books/{bookId:[0-9]*}") 

@ApiOperation(value = "查询某本书籍", httpMethod = "GET", 

notes = "根据bookId,查询到某本书籍", 

response = BaseResultVo.class 

) 

@ApiResponses(value = { 

@ApiResponse(code = 200, message = "Success", response = BaseResultVo.class), 

@ApiResponse(code = 401, message = "Unauthorized"), 

@ApiResponse(code = 403, message = "Forbidden"), 

@ApiResponse(code = 404, message = "Not Found"), 

@ApiResponse(code = 500, message = "Failure")}) 

public BaseResultVo getBook(@ApiParam(value = "书籍ID", required = true) @PathVariable("bookId") Integer bookId) { 

LOGGER.info("请求参数bookId值:{}", bookId); 

Book book = bookService.getBook(bookId); 

BaseResultVo baseResultVo = new BaseResultVo(); 

if (book != null) { 

LOGGER.info("查询到书籍ID为{}的书籍", bookId); 

baseResultVo.setData(book); 

baseResultVo.setCode(ResultStatusCode.OK.getCode()); 

baseResultVo.setMessage(ResultStatusCode.OK.getMessage()); 

} else { 

LOGGER.info("没有查询到书籍ID为{}的书籍", bookId); 

baseResultVo.setCode(ResultStatusCode.DATA_QUERY_ERROR.getCode()); 

baseResultVo.setData("Query book failed id=" + bookId); 

baseResultVo.setMessage(ResultStatusCode.DATA_QUERY_ERROR.getMessage()); 

} 

return baseResultVo; 

} 

@PutMapping(value = "/api/books/{bookId:[0-9]*}") 

@ApiOperation(value = "更新某本书籍", httpMethod = "PUT", 

notes = "更新的某本书籍信息", 

response = BaseResultVo.class 

) 

@ApiResponses(value = { 

@ApiResponse(code = 200, message = "Success", response = BaseResultVo.class), 

@ApiResponse(code = 401, message = "Unauthorized"), 

@ApiResponse(code = 403, message = "Forbidden"), 

@ApiResponse(code = 404, message = "Not Found"), 

@ApiResponse(code = 500, message = "Failure")}) 

public BaseResultVo updateBook(@NotNull @ApiParam(value = "要更新的某本书籍ID", required = true) @PathVariable("bookId") Integer bookId, @Validated @NotNull @ApiParam(value = "要更新的某本书籍信息", required = true) @RequestBody Book book) { 

LOGGER.info("请求参数bookId值:{}", bookId); 

BaseResultVo baseResultVo = new BaseResultVo(); 

if (bookId == null && book == null) { 

baseResultVo.setCode(ResultStatusCode.DATA_INPUT_ERROR.getCode()); 

baseResultVo.setMessage(ResultStatusCode.DATA_INPUT_ERROR.getMessage()); 

return baseResultVo; 

} 

if (bookService.getBook(bookId) == null) { 

baseResultVo.setCode(ResultStatusCode.DATA_QUERY_ERROR.getCode()); 

baseResultVo.setData("book id=" + bookId + " not existed"); 

baseResultVo.setMessage(ResultStatusCode.DATA_QUERY_ERROR.getMessage()); 

return baseResultVo; 

} 

Book updatedBook = bookService.updateBook(book); 

if (updatedBook != null) { 

baseResultVo.setData(updatedBook); 

baseResultVo.setCode(ResultStatusCode.OK.getCode()); 

baseResultVo.setMessage(ResultStatusCode.OK.getMessage()); 

} else { 

baseResultVo.setCode(ResultStatusCode.DATA_UPDATED_ERROR.getCode()); 

baseResultVo.setData("Update book failed id=" + book.getBookId()); 

baseResultVo.setMessage(ResultStatusCode.DATA_UPDATED_ERROR.getMessage()); 

} 

return baseResultVo; 

} 

@DeleteMapping(value = "/api/books/{bookId:[0-9]*}") 

@ApiOperation(value = "删除某本书籍信息", httpMethod = "DELETE", 

notes = "删除某本书籍信息", 

response = BaseResultVo.class 

) 

@ApiResponses(value = { 

@ApiResponse(code = 200, message = "Success", response = BaseResultVo.class), 

@ApiResponse(code = 401, message = "Unauthorized"), 

@ApiResponse(code = 403, message = "Forbidden"), 

@ApiResponse(code = 404, message = "Not Found"), 

@ApiResponse(code = 500, message = "Failure")}) 

public BaseResultVo deleteBook(@ApiParam(value = "要删除的某本书籍ID", required = true) @PathVariable("bookId") Integer bookId) { 

BaseResultVo baseResultVo = new BaseResultVo(); 

if (bookService.deleteBook(bookId) == 1) { 

baseResultVo.setData("Deleted book id=" + bookId); 

baseResultVo.setCode(ResultStatusCode.OK.getCode()); 

baseResultVo.setMessage(ResultStatusCode.OK.getMessage()); 

} else { 

baseResultVo.setCode(ResultStatusCode.DATA_DELETED_ERROR.getCode()); 

baseResultVo.setData("Deleted book failed id=" + bookId); 

baseResultVo.setMessage(ResultStatusCode.DATA_DELETED_ERROR.getMessage()); 

} 

return baseResultVo; 

}
时间: 2024-10-21 23:33:38

swagger and restful api 参考的相关文章

微服务架构实战:Swagger规范RESTful API

转载本文需注明出处:EAII企业架构创新研究院,违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复公众号:"EAII企业架构创新研究院".(微信号:eaworld)   导读:本文是EAII微服务系列文章之一.随着微服务架构的流行,REST风格也是大势所趋.那么,什么是REST?如何规范我们的RESTFUL API 文档?本文中,作者主要基于以上两个话题进行讨论并探讨在数字化企业云平台实践中如何规范RESTful文档. REST的引入 随着微服务架构的广泛流行,REST风

swagger (可视化RESTful API的工具)

swagger 是一个可视化RESTful WebService的工具. 官网:http://swagger.io 效果 下图可以看出,swagger清晰地展现了web服务的方法.地址.发送json格式与应答json格式.还可以通过它直接进行服务调用,查看结果. 工作原理 视图部分: swagger-ui是一系列css\js资源,它通过html页面向用户展示一个应用的RESTful API信息.它通过向swagger-core后台模块发送ajax请求获取必要的信息. 后台部分:swagger-c

使用swagger作为restful api的doc文档生成

作者:@Ryan-Miao本文为作者原创,转载请注明出处:http://www.cnblogs.com/woshimrf/p/5863318.html 目录 初衷swagger介绍在spring-boot中使用配置4.设定访问API doc的路由参考: 初衷 记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情.也许多点,也许少点.甚至,接口总是需要适应新需求的,修改了,增加了,这份文档维护起来就很困难了.于是发现了swagge

用python写一个restful API

# -*- coding: utf-8 -*- # 作者: 煮酒品茶 """ package.module ~~~~~~~~~~~~~~ python实现的图书的一个restful api. 参考restful设计指南 URL: http://www.ruanyifeng.com/blog/2014/05/restful_api.html restful api 一般模式: GET(SELECT):从服务器取出资源(一项或多项). POST(CREATE):在服务器新建一个资

Spring Boot 整合 swagger2 自动生成 RESTFul API 文档

1)首先编辑pom.xml添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId>

使用 Swagger 文档化和定义 RESTful API

大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Description Language,WSDL)类似的语言来定义使用者与提供者之间的请求和响应结构.由于没有充分的合同服务,许多 REST API 提供者使用 Microsoft Word 文档或维基页面来记录 API 用法.这些格式使协作和文档版本控制变得很困难,尤其对于有许多 API 或资源的应用程序,或者

Restful API 架构与设计参考原则

1. 什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如果一个架构符合REST的

Restful API 设计参考原则

在项目中,需要为后台服务撰写API.刚开始接触的时候,并没有考虑太多,就想提供URL,服务端通过该URL进行查询.创建.更新等操作即可.但再对相关规范进行了解后,才发现,API的设计并没有那么简单,远远不是URL的问题,而是一个通信协议的整体架构 1. 使用GET.POST.PUT.DELETE这几种请求模式 请求模式也可以说是动作.数据传输方式,通常我们在web中的form有GET.POST两种,而在HTTP中,存在下发这几种. GET (选择):从服务器上获取一个具体的资源或者一个资源列表.

3.Spring Boot中使用Swagger2构建强大的RESTful API文档

原文:http://www.jianshu.com/p/8033ef83a8ed 由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端. 这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发.Android开发或是Web开发