您现在的位置是:首页 >技术教程 >Restful风格使用postman测试接口【增删查改示例】网站首页技术教程
Restful风格使用postman测试接口【增删查改示例】
postman简介
Postman 最早是google的一个插件存在的,但是又google退出中国以及postman团队对工具的定位,主攻pc端app的开发及优化,现在的google插件已经很少再使用了,postman虽然是一个商用软件,但是对于我们普通用户来说,基本功能完全够用的。
Postman 从最初设计上就是为接口测试而生的,所以在程序员中广泛使用,在开发调试网络程序时跟踪一些网络请求,能够高效的帮助后端开发人员独立进行接口测试。
主要功能:
Postman是一款功能强大的网页调试、HTTP请求发送及接口测试用例运行的工具
能够模拟各种HTTP Request如GET、POST 、header、 PUT、 DELETE…等等
请求中还可以发送文件(图片、文本文件等)、额外的header等,实现特定的接口测试
能够高效的帮助后端开发人员独立进行接口测试
Postman提供了云服务,支持数据同步及团队协作等
提供了丰富的HTML格式的报告模板
不仅仅进行接口测试,而且是一个API管理工具
postman官网
https://www.postman.com/
postman的下载就自行了
建表
建表并插入书本数据,这里是使用的navicat工具mysql
DROP TABLE IF EXISTS `tb_books`;
CREATE TABLE `tb_books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(30) DEFAULT NULL,
`name` varchar(40) DEFAULT NULL,
`description` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4;
INSERT INTO `tb_books` VALUES ('1', '测试111-----', '测试书名111', '测试描述111');
INSERT INTO `tb_books` VALUES ('3', '小说', '小说1', '世界名著1');
INSERT INTO `tb_books` VALUES ('4', '小说', '小说2', '世界名著2');
INSERT INTO `tb_books` VALUES ('5', '小说', '小说3', '世界名著3');
INSERT INTO `tb_books` VALUES ('6', '小说', '小说4', '世界名著4');
INSERT INTO `tb_books` VALUES ('7', '小说', '小说5', '世界名著5');
INSERT INTO `tb_books` VALUES ('8', '小说', '小说6', '世界名著6');
INSERT INTO `tb_books` VALUES ('9', '小说', '小说7', '世界名著7');
INSERT INTO `tb_books` VALUES ('10', '小说', '小说8', '世界名著8');
INSERT INTO `tb_books` VALUES ('11', '小说', '小说9', '世界名著9');
INSERT INTO `tb_books` VALUES ('12', '小说', '小说10', '世界名著10');
INSERT INTO `tb_books` VALUES ('13', '小说', '小说11', '世界名著11');
INSERT INTO `tb_books` VALUES ('14', '小说', '小说12', '世界名著12');
INSERT INTO `tb_books` VALUES ('15', '小说', '小说13', '世界名著13');
INSERT INTO `tb_books` VALUES ('16', '小说', '小说14', '世界名著14');
INSERT INTO `tb_books` VALUES ('17', '小说', '小说15', '世界名著15');
INSERT INTO `tb_books` VALUES ('18', '小说', '小说16', '世界名著16');
INSERT INTO `tb_books` VALUES ('19', '小说', '小说17', '世界名著17');
INSERT INTO `tb_books` VALUES ('20', '小说', '小说18', '世界名著18');
INSERT INTO `tb_books` VALUES ('21', '小说', '小说19', '世界名著19');
INSERT INTO `tb_books` VALUES ('22', '小说', '小说20', '世界名著20');
INSERT INTO `tb_books` VALUES ('23', '测试1', '测试书名1', '测试描述1');
INSERT INTO `tb_books` VALUES ('24', '测试11', '测试书名11', '测试描述11');
INSERT INTO `tb_books` VALUES ('25', 'java1', '你好 修改1', '测试内容1');
INSERT INTO `tb_books` VALUES ('47', '测试1', '测试书名1', '测试描述1');
INSERT INTO `tb_books` VALUES ('48', '测试11', '测试书名11', '测试描述11');
INSERT INTO `tb_books` VALUES ('49', 'java', 'springboot1', 'springboot1');
INSERT INTO `tb_books` VALUES ('50', 'java', 'springboot1', 'springboot1');
pom文件
注意有mybatis-plus依赖,因为使用mabatisplus做的
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
yaml文件
主要是连接数据库和设置端口号
server:
port: 80
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root(用户名)
password: 密码
thymeleaf:
cache: false
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath:mapper/*.xml
model下Book类
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("tb_books")
public class Book {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String type;
private String name;
private String description;
}
Dao接口
bookDao 继承自baseMapper,由plus提供
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iwei.model.Book;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
service
bookService
import com.baomidou.mybatisplus.extension.service.IService;
import com.iwei.model.Book;
public interface BookService extends IService<Book> {
}
bookServiceImpl
来实现这个接口,至于怎么实现的就不深究了。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iwei.dao.BookDao;
import com.iwei.model.Book;
import com.iwei.service.BookService;
import org.springframework.stereotype.Service;
@Service
public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements BookService {
}
其实做到这里我们还是可以在测试类中先来测试一下,来看看是否可以从数据库中读取数据,不过应该是成功的。
测试类中测试一下contextLoads
@SpringBootTest
class Springboot0112ApplicationTests {
@Autowired
private BookService bookService;
@Test
void contextLoads() {
List<Book> list= bookService.list();
for(Book book:list){
System.out.println(book);
}
}
}
编写控制器
bookCnotroller,这里我们使用restful风格,调用bookService中的函数,然后我们在postman中进行get,post,put,delete测试
@RestController
@RequestMapping("/books")//公共部分
public class BookController {
@Resource
private BookService bookService;
@GetMapping
public List<Book> books(){
return bookService.list();
}
@GetMapping("{id}")//restful风格参数,?后面参数为查询串参数
public Book book(@PathVariable("id") Integer id){
return bookService.getById(id) ;
}
//Post,Put,Delete用工具发请求
@PostMapping//借助工具使用postman或者swagger3,地址栏没办法测
public boolean add(@RequestBody Book book){
boolean flag =bookService.save(book);
return flag;
}
@PutMapping("{id}")//修改
public boolean update(@PathVariable Integer id,@RequestBody Book book){
book.setId(id);
boolean flag1=bookService.updateById(book);
return flag1;
}
@DeleteMapping("{id}")//删除
public boolean delete(@PathVariable Integer id){
boolean flag2=bookService.removeById(id);
return flag2;
}
}
postman中测试
获取数据(GET)
增加(POST)
注意json格式