最近接触了一些java开发的东西,为了能够更加深入的了解接口,更好的做接口测试,本人决定亲自去开发接口,了解接口内部的实现原理,废话不多说,直接上示例:
这次开发的是一个分页查询的接口,方法为get,基于http协议,为了增强以后接口开发的熟练度,特此记录一下springboot开发过程中,每一层都需要干些什么:
1.Controller层
这层专注于请求的处理以及请求参数的接收,同时会调用service层中实现好的方法,具体参考如下:
/**
* 添加Controller注解,声明此类为前置控制器
*/
@Controller
public class ApiCaseController {
/**
* 注入service类
*/
@Autowired
ApiService apiService;
/**
* 前端分别传入了apiUrl,project,pageSize,offset,sort,sortOrder参数
* 注意:@RequestParam(value = "project",required = false)这表示接收到的project参数赋值给了形参project
* required=false表明该参数可传可不传,如果没有该参数,就必须传入,不然就会报错
* @ResponseBody 该注解表示把返回的实体转化为响应实体,如把HashMap转化成Json,或者直接把String返回给前端,而不通过视图解析器解析
* @param apiUrl
* @param project
* @param pageSize
* @param offset
* @param sort
* @param sortOrder
* @return
*/
@ApiOperation("获取接口列表")
@RequestMapping(value="/getApiList",method = RequestMethod.GET)
public @ResponseBody Map getApiList(@RequestParam(value = "address",required = false) String apiUrl,
@RequestParam(value = "project",required = false) String project,
int pageSize, int offset, String sort, String sortOrder){
Map map=null;
map=apiService.selectAllApi(apiUrl,project,pageSize,offset,sort,sortOrder);
return map;
}
}
2.Service层
service层主要是业务逻辑层,是最重要的一部分,夹在Controller层和Dao层之间。
@Service
public interface ApiService {
Map selectAllApi(String apiUrl, String project, int pageSize, int offset, String sort, String sortOrder);
}
service层实现类,集成该service接口
/**
* @Service 注解声明此类为service层,赋值为apiService,以便注入到Controller层
*/
@Service(value = "apiService")
public class ApiServiceImpl implements ApiService{
@Autowired
APIDao apiDao;
@Override
public Map selectAllApi(String apiUrl, String project, int pageSize, int start, String sort, String sortOrder) {
Map page=new HashMap();
Map content1=new HashMap();
Map content2=new HashMap();
content1.put("apiUrl",apiUrl);
content1.put("project",project);
content1.put("pageSize",pageSize);
content1.put("start",start);
content1.put("sort",sort);
content1.put("sortOrder",sortOrder);
List apiList=apiDao.selectAllApi(content1);
content2.put("apiUrl",apiUrl);
content2.put("project",project);
int total=apiDao.countApiList(content2);
page.put("data",apiList);
page.put("total",total);
return page;
}
}
3.Dao接口
用于和数据库交互
/**
* Mapper注解
*/
@Mapper
public interface APIDao {
/**
* 根据项目id查询关联api
* @param proid
* @return
*/
List selectAPIByPro(String proid);
/**
* 根据条件查询接口列表,分页
* @param content
* @return
*/
List selectAllApi(Map content);
int countApiList(Map content2);
}
4.Mapper文件
t_api
frowid,faid,fproid,fapiname,faurl,ftype,fcontenttype,fcasenum,fcreatetime,fupdatetime
faid,fproid,fapiname,faurl,ftype,fcontenttype,fcasenum,fcreatetime,fupdatetime