Spring boot开发简单的API接口

本文探讨了良好的API接口设计规范,包括响应结构的标准化,如使用状态码200-400系列,明确的信息描述msg,以及data的数据携带。提供了Java代码示例,涵盖了GET、POST等请求方式和参数处理技巧,强调了精确的状态码对于客户端理解响应的重要性。
摘要由CSDN通过智能技术生成

响应模板

发出来的接口返回的响应结果应该尽可能的规范统一,可以去看规范来开发自己的接口。一个比较好的响应规范应该要有状态码(code)、信息描述(msg)、数据(data)。

下面我展示一下自己的开发模板:

```java @Data public class Result implements Serializable {

private int code;//200表示正常,非200表示异常
private String msg;//结果返回的信息
private Object data;//结果返回的数据

//请求成功的响应
public static Result success(Object data){
    return success(200,"请求成功",data);
}

//自定义成功相应的信息内容
public static Result success(int code,String msg,Object data){
    Result result=new Result();
    result.setCode(code);
    result.setMsg(msg);
    result.setData(data);
    return result;
}

//请求失败
public static Result fail(int code,String msg){
    return fail(code,msg,null);
}

//自定义失败相应的信息内容
public static Result fail(int code,String msg,Object data){
    Result result=new Result();
    result.setCode(code);
    result.setMsg(msg);
    result.setData(data);
    return result;
}

```

接口controller

编写这个controller这个类,需要在类的前面加上注解@RestController,或者在每个方法前面加上@ResponseBody。我建议使用@RestController。

image.png

请求方式 请求方式的注解有: ```java @RequestMapping //一般用于全局设置,对应一个模块

/* * rest请求方式主要有以下几种: * get:主要用来获取资源,对应的注解:@GetMapping * post:用来建立新的资源,对应的注解:@PostMapping * put:用来更新资源,对应的注解:@PutMapping * delete:用来删除资源,对应的注解:@DeleteMapping * */ ```

参数的传递

@PathVariable

获取路径参数。即url/{id}这种形式。

@RequestParam

获取查询参数。即url?name=这种形式

注意:@GetMapping是没有请求体的,也就是说它大部分都是采用上面的两种方式

java @GetMapping("/demo/{id}") public void demo(@PathVariable(name = "id") String id, @RequestParam(name = "name") String name) { System.out.println("id="+id); System.out.println("name="+name); } 那么当get方法的参数过于复杂的时候怎么处理?

java public List<String> getName(@RequestParam String queryDtoStr) { QueryDto queryDto = new Gson().fromJson(queryDtoStr, QueryDto .class); // .... return new ArrayList<>(); } 前端的请求就变成了:

http://localhost:8080/app/names?queryDtoStr={"query1":12,"query2":2,"query3":2}

@RequestBody

这个就是请求体参数,前端一般是用json串来传递给后端的。后端可以采用一个实体bean来接受参数。

java public void doInsert(@RequestBody ApiUser apiUser) { AfaUser user = BeanUtils.copyBean(apiUser, AfaUser.class); userService.addAfaUser(user); }

也可以是这样的

java @PostMapping(path = "/demo1") public void demo1(@RequestBody Map<String, String> person) { System.out.println(person.get("name")); }

状态码

状态码必须精确,客户端的每一次请求,服务器都必须给出回应。回应包括 HTTP 状态码和数据两部分。

HTTP 状态码就是一个三位数,分成五个类别。

```

1xx:相关信息

2xx:操作成功

3xx:重定向

4xx:客户端错误

5xx:服务器错误

```

这五大类总共包含100多种状态码,覆盖了绝大部分可能遇到的情况。每一种状态码都有标准的(或者约定的)解释,客户端只需查看状态码,就可以判断出发生了什么情况,所以服务器应该返回尽可能精确的状态码。

常用状态码

``` 200 OK 201 Created 204 No Content

301 永久重定向 302 暂时重定向

400 服务器不理解客户端的请求,未做任何处理。 401 用户未提供身份验证凭据,或者没有通过身份验证。 403 用户通过了身份验证,但是不具有访问资源所需的权限。 404 所请求的资源不存在,或不可用。 405 用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。 410 所请求的资源已从这个地址转移,不再可用。 415 客户端要求的返回格式不支持。 422 客户端上传的附件无法处理,导致请求失败。 429 客户端的请求次数超过限额。

500 客户端请求有效,服务器处理时发生了意外。 503 服务器无法处理请求,一般用于网站维护状态。 ```

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程的实战源码是我在 GitHub 上开源项目 spring-boot-projects 中的其中一个项目代码,目前已有 2300 多个 star,项目截图如下: 由于项目比较受大家欢迎,因此心中就出现了将它做成教学视频的想法,也就是你现在了解的这个课程《SpringBoot入门及前后端分离项目开发》,本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发Spring Boot 介绍、前后端分离、API 规范等内容旨在让读者更加熟悉 SpringBoot 及企业开发中需要注意的事项并具有使用 SpringBoot 技术进行基本功能开发的能力;这最后的项目实战为课程的主要部分,我会带着大家实际的开发一个前后端分离的 Spring Boot 实践项目,让大家实际操作并从无到有开发一个线上项目,并学习到一定的开发经验以及其中的开发技巧,旨在让读者具有将 Spring Boot 真正应用于项目开发的能力; 以下为实践项目的页面和功能展示,分别为:登录页面 列表页面(分页功能) 图片上传功能 富文本编辑器整合使用 实践项目的主要功能和页面就是这些,通过项目展示大家也能够感受到,在实际应用开发中的高频次功能都已经实现,稍加修改就可以运用到企业开发中,整个项目的开发模式为前后端分离的模式,即 Spring Boot 提供后端接口,前端页面通过 Ajax 异步调用接口的方式与后端服务器进行交互并将数据填充至页面中,这也是目前企业开发中比较重用的开发模式,希望大家能够了解并且能够实际的上手开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值