业务代码思路(一):根据接口文档写接口
文章目录- 前言
- 一、什么是接口文档?
- 二、案例
前言
由前后端开发工程师共同定义接口、写接口文档再根据接口文档去开发,这就是接口文档作用。
一、什么是接口文档?
包含方法,url,请求参数,返回参数的接口开发文档就是接口文档:
方法:也就是我们常写的新增,删除,修改,查询
url:调用方法,一般是从前端调后端的方法地址
请求参数:字段、说明、类型、备注、是否必填
返回参数
1、如果只返回接口调用成功还是失败(新增、删除、修改等),则只有一个结构体:code和message两个参数;
2、如果要返回某些参数,则有两个结构体:一个是是code/mesage/data;另一个是data里写返回的参数,data是object类型;
3、如果要返回列表,那么有三个结构体:第三个是code/mesage/data,data是object,里面放page/size/total/ totalPage/list 5个参数,其中list是Arrary类型,list里放object,object里是具体的参数。
二、案例1.接口文档返回的Json数据格式如下
(1).返回对象,
{"code":" ","msg":" ","time":...,"object":{}}
(2).返回数组,
{"code":" ","msg":" ","time":...,"items":[{},{}]}
2.建立abstractJsonObject(Json数据的基类)
public class abstractJsonObject {
//code
private String code;
//msg
private String msg;
private Long time = new Date().getTime();
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Long getTime() {
return time;
}
public void setTime(Long time) {
this.time = time;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public void setContent(String code, String msg) {
this.code = code;
this.msg = msg;
}
public void setStatusObject(StatusObject statusObject) {
this.code = statusObject.getCode();
this.msg = statusObject.getMsg();
}
}
3.其中,statusObject是一个状态对象,封装了状态码(code)和状态信息(msg)
public class statusObject {
// 状态码
private String code;
// 状态信息
private String msg;
public statusObject(String code, String msg) {
super();
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
4.建立json对象类singleObject
public class singleObject extends sbstractJsonObject {
private Object object;
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
}
5.建立json数组类listObject
public class listObject extends abstractJsonObject {
// 列表对象
private List> items;
public List> getItems() {
return items;
}
public void setItems(List> items) {
this.items = items;
}
}
6.jackJsonUtils生成json数据和解析json数据
public class jackJsonUtils {
static ObjectMapper objectMapper;
public static T fromJson(String content, Class valueType) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.readValue(content, valueType);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String toJson(Object object) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.writevalueAsString(object);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
7.创建一个类继承自HttpServlet,例如studentInq.java
public class studentInq extends HttpServlet {
private static final long serialVersionUID = 1L;
public StudentsInq() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
8 .新建一个接口studentService,并实现。
public interface studentService {
public List getAllStudents();
}
public class studentServiceImpl implements studentService{
@Override
public List getAllStudents() {
// TODO Auto-generated method stub
return StudentBusiness.getAllStudents();
}
}
9 。我们实现Servlet的doGet(),具体代码:
Listlist = new studentServiceImpl().getAllStudents(); ListObject listObject=new ListObject(); listObject.setItems(list); listObject.setStatusObject(StatusHouse.COMMON_STATUS_OK); String responseText = jackJsonUtils.toJson(listObject); ResponseUtils.renderJson(response, responseText);
其中,ResponseUtils是将返回的json数据写入到response中。至此,生成json数据已经成功。
10 .连接数据库
public class DBHelper {
public static final String url = "jdbc:mysql://localhost:3306/students_manage";
public static final String name = "com.mysql.jdbc.Driver";
public static final String user = "****";
public static final String password = "******";
public Connection conn = null;
public PreparedStatement pst = null;
public DBHelper(String sql) {
try {
Class.forName(name);//
conn = DriverManager.getConnection(url, user, password);//
pst = conn.prepareStatement(sql);//
} catch (Exception e) {
e.printStackTrace();
}
}
public void close() {
try {
this.conn.close();
this.pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
11 .在浏览器中输入http://localhost:8080/mServer/studentInq,会出现数据。



