java api接口开发框架_接口开发-基于SpringBoot创建基础框架 - Go语言中文社区

java api接口开发框架_接口开发-基于SpringBoot创建基础框架


说到接口开发,能想到的开发语言有很多种,像什么Java啊、.NET啊、PHP啊、NodeJS啊,太多可以用。为什么选择Java,究其原因,最后只有一个解释,那就是“学Java的人多,人员招聘范围大,有利于团队扩建”。真要说说效率的话,恕我直言,真不如NodeJS(其他的.NET、PHP我不会,O(∩_∩)O~~)。

言归正传,基于Java的框架很多,最终选择了SpringBoot(中间的过程就不说了,折磨了我2天),我们要实现的主要目标,一句话概括“收到前端发送的API接口请求,完成数据以及逻辑处理,返回结果数据”。

一、创建基础工程

1. 打开IDEA -> File -> New -> Project...

f04a31610895ff43b6538943b62da256.png

a6a9d11a1b94689498ffaf7277cf096e.png

9496603c36a4aa6bc08db2852ab4c83f.png

14976636e9d05fbf7dec36f8baf1bf68.png

8610591096bddb9115f97889e2103223.png

创建完工程以后,大概就是上面这个模样(别着急继续,等你的Maven把依赖库下载完,再继续下面的。如果你连Maven都没安装的话,先自行百度把Maven配置好)。

二. 创建项目目录

a61e7586919f0d19773ef4c0a7cb0dd6.png

(庆幸一口气在图片上都标注号了)

多说一句,目录结构,完全可以根据自己的项目需要重新归置,毕竟自己用的顺手才是最重要的。

三、接下来写个样例

controller/Test

package com.univalsoft.springbootapimaster.api.controller;

import com.univalsoft.springbootapimaster.common.controller.BaseController;

import com.univalsoft.springbootapimaster.common.model.APIResponse;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class Test extends BaseController {

@RequestMapping(value = "/api/test/try", method = RequestMethod.POST)

public APIResponse uploadImage(

@RequestParam(value = "name") String name /* 姓名 */

) {

//

if (name.length() < 3) {

return this.fail("[姓名]参数不合法,请重新输入");

}

String result = name + ", 欢迎浏览,转载请注明出处!!!(Univalsoft)";

return this.success(result);

}

}

如此简单的代码,就不多说了哈,看不懂的,自觉找个墙角面壁。

运行程序,have a try !

dfcdaabe972a9c9c7dc0ea16d0b982b6.png

1759e68e1c3ec4d1ea0efbd6106e444d.png

几个重要的基类

1. BaseController

package com.univalsoft.springbootapimaster.common.controller;

import com.univalsoft.springbootapimaster.common.model.APIResponse;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

@RestController

public class BaseController {

public final Logger logger = LoggerFactory.getLogger(this.getClass());

/**

* 返回成功Response

*

* @param data

* @return

*/

public APIResponse success(Object data) {

logger.info("请求结束 :success: =>", data.toString());

APIResponse res = new APIResponse();

res.success(data);

return res;

}

/**

* 分页列表

*

* @param data

* @param pageIndex

* @param pageSize

* @param total

* @return

*/

public APIResponse successWithPage(Object data, int pageIndex, int pageSize, int total) {

logger.info("请求结束 :success: =>", data.toString());

APIResponse res = new APIResponse();

HashMap pageResponse = new HashMap<>();

pageResponse.put("data", data);

pageResponse.put("current", pageIndex);

pageResponse.put("hasMore", pageIndex * pageSize < total);

pageResponse.put("total", total);

res.success(pageResponse);

return res;

}

/**

* 返回错误Response

*

* @param errmsg

* @return

*/

public APIResponse fail(String errmsg) {

logger.info("请求结束 :fail: =>", errmsg);

APIResponse res = new APIResponse();

res.fail(1, errmsg);

return res;

}

}

2. APIResponse

package com.univalsoft.springbootapimaster.common.model;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class APIResponse {

/**

*

*/

private static final long serialVersionUID = 1L;

public static final int ERROR_PARAM_INVALID = 40001;

public static final int ERROR_AUTH_FAIL = 44001; // 认证信息失败

// 信息代码

private int errno;

// 返回信息

private String errmsg;

// 返回内容

private Object data;

/**

* 返回错误信息

* @param errno

* @param errmsg

*/

public void fail(int errno, String errmsg) {

this.errno = errno;

this.errmsg = errmsg != null ? errmsg : "";

this.data = "";

// 整体错误

if (errno == ERROR_PARAM_INVALID) {

this.errmsg = "参数不合法";

} else if (errno == ERROR_AUTH_FAIL) {

this.errmsg = "信息认证失败";

}

}

/**

* 分页数据查询

*

* @param list 业务数据集合

* @param count 总条数

* @param current 当前页码

* @param pageSize 每页数量

*/

public void setPageData(List list, Integer count, Integer current, Integer pageSize) {

HashMap data = new HashMap<>();

data.put("totalAmount", count); // 符合条件的总条数

data.put("current", current); // 当前页码

data.put("amount", (count + pageSize - 1) / pageSize); // 总页数(向上取整)

// 容错数组类型

if (list != null) {

data.put("data", list); // 业务数据

} else {

data.put("data", new ArrayList<>()); // 空业务数据

}

this.data = data;

}

/**

* 返回成功信息

* @param data

*/

public void success(Object data) {

this.errno = 0;

this.errmsg = "";

this.data = data;

}

public int getErrno() {

return errno;

}

public void setErrno(int errno) {

this.errno = errno;

}

public String getErrmsg() {

return errmsg;

}

public void setErrmsg(String errmsg) {

this.errmsg = errmsg;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

}

好了,基础工程完活。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_36165751/article/details/114123749
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 17:40:33
  • 阅读 ( 1327 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢