如何用Java写一个规范的http接口?

简介: 在平常的工作中,经常会遇到要写接口的情况,现在最常用的就是http接口,今天我就介绍一下如何去写一个规范的http接口。

听说微信搜索《Java鱼仔》会变更强哦!


本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦


(一)概述


在平常的工作中,经常会遇到要写接口的情况,现在最常用的就是http接口,今天我就介绍一下如何去写一个规范的http接口。


(二)搭建项目


首先我们先搭建一个SpringBoot项目,如何搭建这里就不讲了,引入相关的依赖:


<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></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>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

(三)写一个通用结果对象


一个接口的返回信息应该至少包含以下几项:


1、结果编码


2、结果信息


3、返回数据


因此新建一个类来记录返回的结果集Result :


@Data@AllArgsConstructor@NoArgsConstructorpublicclassResult {
privateintcode;
privateStringmessage;
privateObjectdata;
}

其中结果编码和结果信息需要是统一的,这里用枚举类型最合适,新建一个枚举类ResponseCode


publicenumResponseCode {
// 系统模块SUCCESS(0, "操作成功"),
ERROR(1, "操作失败"),
SERVER_ERROR(500, "服务器异常"),
// 通用模块 1xxxxILLEGAL_ARGUMENT(10000, "参数不合法"),
REPETITIVE_OPERATION(10001, "请勿重复操作"),
ACCESS_LIMIT(10002, "请求太频繁, 请稍后再试"),
MAIL_SEND_SUCCESS(10003, "邮件发送成功"),
// 用户模块 2xxxxNEED_LOGIN(20001, "登录失效"),
USERNAME_OR_PASSWORD_EMPTY(20002, "用户名或密码不能为空"),
USERNAME_OR_PASSWORD_WRONG(20003, "用户名或密码错误"),
USER_NOT_EXISTS(20004, "用户不存在"),
WRONG_PASSWORD(20005, "密码错误"),
            ;
ResponseCode(Integercode, Stringmsg) {
this.code=code;
this.msg=msg;
    }
privateIntegercode;
privateStringmsg;
publicIntegergetCode() {
returncode;
    }
publicvoidsetCode(Integercode) {
this.code=code;
    }
publicStringgetMsg() {
returnmsg;
    }
publicvoidsetMsg(Stringmsg) {
this.msg=msg;
    }
}

(四)接口编写


上面的两个类可以作为其他项目的通用类,要写接口时直接放代码就行,接下来写一个接口测试一下:


新建一个ResponseController


@RestControllerpublicclassResponseController {
@RequestMapping(value="/getData",method=RequestMethod.GET)
publicResultgetData(){
Map<String,Object>map=newHashMap<>();
map.put("name","javayz");
map.put("age","23");
Map<String,String>childMap=newHashMap<>();
childMap.put("home","浙江");
childMap.put("job","java");
map.put("childMap",childMap);
Resultresult=newResult(ResponseCode.SUCCESS.getCode(),ResponseCode.SUCCESS.getMsg(),map);
returnresult;
    }
}

这里展示的是通过Map集合插入数据,最后返回Result,调用结果如下:


{
"code": 0,
"message": "操作成功",
"data": {
"name": "javayz",
"childMap": {
"job": "java",
"home": "浙江"        },
"age": "23"    }
}

除了使用Map传递数据之外,还可以通过对象来传递数据,新建两个类分别是User和UserDetail:


@Data@AllArgsConstructor@NoArgsConstructorpublicclassUser {
privateStringname;
privateStringage;
privateUserDetailuserDetail;
}
@Data@AllArgsConstructor@NoArgsConstructorpublicclassUserDetail {
privateStringhome;
privateStringjob;
}

新写一个Get请求的接口,在接口中用对象传递数据


@RequestMapping(value="/getData2",method=RequestMethod.GET)
publicResultgetData2(){
UserDetailuserDetail=newUserDetail("浙江","java");
Useruser=newUser("javayz","23",userDetail);
Resultresult=newResult(ResponseCode.SUCCESS.getCode(),ResponseCode.SUCCESS.getMsg(),user);
returnresult;
}

调用接口后返回值如下:


{
"code": 0,
"message": "操作成功",
"data": {
"name": "javayz",
"age": "23",
"userDetail": {
"home": "浙江",
"job": "java"        }
    }
}

(五)总结


一般来说公司里都会有一套自己的规则,如果是自己写一个新的项目,那么上面的这几个通用类就可以直接用了。我们下期再见!

相关文章
|
12天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
61 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
3天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
28 6
|
20天前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
20 2
|
22天前
|
安全 IDE Java
Java常见规范及易忘点
遵循Java编程规范和注意易忘点是提高代码质量和可维护性的关键。通过规范的命名、格式、注释和合理的代码组织,可以让代码更加清晰和易于维护。同时,注意空指针检查、线程安全、集合框架和字符串操作等常见易忘点,可以减少程序错误,提高运行效率。结合单一职责原则、面向接口编程和合理的异常处理,能够编写出高质量的Java代码。希望本文能够帮助Java开发者提升编码水平,写出更高效、更可靠的代码。
23 2
|
24天前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
46 3
|
23天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
69 1
|
23天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
46 1
|
23天前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
37 1
|
XML 测试技术 数据格式
http接口自动化测试框架实现
http接口自动化测试框架实现 作者:张元礼 http://blog.csdn.net/vincetest  一、测试需求描述 对服务后台一系列的http接口功能测试。 输入:根据接口描述构造不同的参数输入值 输出:XML文件 eg:http://xxx.com/xxx_product/test/content_book_list.jsp?listid=1   二、实现方法 1、选用Python脚本来驱动测试 2、采用Excel表格管理测试数据,包括用例的管理、测试数据录入、测试结果显示等等,这个需要封装一个Excel的类即可。
1627 0
|
3月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性