【接口】接口开发+SpringBoot

一、接口的简单介绍

1.什么是接口:接口及服务;

2.接口的分类:(1)系统的内部接口;(2)第三方的外部接口;

3.简述接口原理图:

4.接口协议:是指客户端跟服务器之间或者接口与接口间进行的通讯时必须要遵从的约定和要求;

互联网上 应用最为广泛的一种网络协议--http协议(超文本传输协议),因此最常见的就是http协议的接口.(webservice接口,dubbo接口等都是基于http协议)

5.http协议的组成

请求:
1.url统一资源定位符(接口地址)
2.请求方式(get,post,put,delete)
3.请求参数
4.请求格式
5.请求头:携带服务器关于客户端的一些信息
6.协议版本
响应:
1.响应的状态码
2.响应头:携带客关于服务器的一些信息给客户端
3.响应报文

6.接口的本质

(1) 接口就是服务,功能的实现,本质就是基于某协议下实现的一个函数,例如登录界面请求xxx/login.html地址的时候,通过路径
   映射,请求到login()函数进行处理.
  (2) 接口的传参对应了函数的参数(接口测试参数--函数参数),接口的响应报文对应了函数定义的返回值(接口响应报文--函数的返回值)

二、引入微服务架构Spring Boot,我们只需要导入我们本次需求需要的依赖包即可!

 <!-- 引入springboot默认提供的一套依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>
<dependencies>
    <!-- 提供了web模块的依赖  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>
    <!-- 热部署  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>provided</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
    </dependency>
</dependencies>

导入mysql依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

三、代码实现简单接口功能如下:

1.get请求:http://IP:端口/user/login?username=xxx&password=123456
2.数据库验证,请求参数是否存在:username=xxx&password=123456,如果不存在提示检查信息,如果存在登录成功
2.json格式响应数据:{"status":"1","message":"登录成功"}

1.新建Application类,SpringBoot入口程序

package cn.bing.starter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

/**Spring boot 入口启动程序,sprint boot内置了tomcat
 * @author Administrator
 */
@ComponentScan(basePackages= {"cn.bing.api"})//扫描组件
@SpringBootApplication//定义sprintboot入口程序
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

2.实现SQL数据库查询工具类

(1)请根据自己实现情况,配置连接数据库参数jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/my_test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
jdbc.username=sql-name
jdbc.password=sql-password

(2)实现SQlUtil工具类

package cn.bing.util;

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import cn.bing.pojo.User;

public class SQLUtil {

    /**传入user进入数据库查询是否存在,返回大于1存在,返回0则不存在
     * @param user
     */
    public static int findSQL(User user) {
        //根据SQL查询结果为数量num,假设没有查到为0
        int num =0;
        //取出需要查询的数据username和password
        String username = user.getUsername();
        String password = user.getPassword();
        //加载properties文件获取连接SQL数据库的参数
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream(new File("src/test/resources/jdbc.properties")));
        } catch (Exception e) {
            e.printStackTrace();
        }
        String url = properties.getProperty("jdbc.url");
        String sqlLoginName = properties.getProperty("jdbc.username");
        String sqlLoginPwd = properties.getProperty("jdbc.password");
        String sql ="select count(*) as number from user_test where name=‘"+username+"‘"+"and password=‘"+password+"‘";
        Connection connection =null;
        try {
            //1.创建连接
            connection = DriverManager.getConnection(url,sqlLoginName,sqlLoginPwd);
            //2.获得一个statement对象,将要执行的sql脚本封装到此对象中
            PreparedStatement statement =connection.prepareStatement(sql);
            ResultSet ResultSet = statement.executeQuery();
            while(ResultSet.next()) {
                num =ResultSet.getInt("number");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                connection.close();//关闭连接
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return num;
    }
}

3.新建user对象

package cn.bing.pojo;

public class User {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public User(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }
    public User() {
        super();
    }
}

4.新建Result对象,响应时=>序列化为json格式返回

package cn.bing.pojo;
public class Result {
    //接口返回状态标志:1:代表接口正常处理,返回成功; 0:代表处理异常,返回失败
    private String status;
    private String message;
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Result(String status, String message) {
        super();
        this.status = status;
        this.message = message;
    }
    public Result() {
        super();
    }
    @Override
    public String toString() {
        return "Result [status=" + status + ", message=" + message + "]";
    }
}

5.中央控制器的实现类

package cn.bing.api;

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

import cn.bing.pojo.Result;
import cn.bing.pojo.User;
import cn.bing.util.SQLUtil;

/**controller:控制器(实现请求分发,一般会在控制器当中定义接口)
 * @author Administrator
 *
 */
@RestController//控制器类
@RequestMapping("/user")//映射路径
public class UserController {
    //登录接口 http://ip:端口/user/login
    @RequestMapping(value="/login")
    public Result login(User user) {
        String username = user.getUsername();
        String password = user.getPassword();
        //1.用户名为空提示"用户名不能为空"
        if(username==null || username.trim().length()==0) {
            return new Result("0","用户名不能为空");
        }
        //2.密码为空,提示"密码不能为空"
        if(password==null || password.trim().length()==0) {
            return new Result("0","密码不能为空");
        }
        //3.用户名密码不为空的情况下jdbc完成数据库查询验证
        if(username != null && password!=null) {
            int num = SQLUtil.findSQL(user);
            System.out.println("-------------------------"+num+"--------------------------------");
            if(num>0) {
                return new Result("1", "登录成功");
            }
        }
        return new Result("0","请核对账密信息!");
    }
}

四.运行Application类,启动SpringBoot程序,访问接口结果如下:

补充:数据库保存用户名及密码截图

五、未完待优化。。。。。

原文地址:https://www.cnblogs.com/xiaozhaoboke/p/11163228.html

时间: 2024-10-08 15:34:55

【接口】接口开发+SpringBoot的相关文章

Force.com - 微信接口后台开发与配置

为寻找国内免费云资源作为微信后台,花了一天时间试用SinaAppEngine(SAE),调试太不方便用户体验差.新浪作为媒体公司技术功底经不起考验,亚马逊能推出AWS,新浪还不行!更好选项是百度BaiduAppEngine(BAE),但最近尽然开始收费,还是安心回到force.com,至少老外承诺免费的东西一直免费且可靠. 第一步,申请force.com账号,请至developer.force.com申请,如是www.salesforce.com申请下来的是作为客户的账号,不适合开发人员:第二步

[转]微信公众平台(测试接口)开发前的准备工作(转载自walkingmanc的专栏)

本文转自:http://blog.csdn.net/jiangweicpu/article/details/21228949 http://blog.csdn.net/walkingmanc/article/details/21457097第二讲 探秘微信公众号 1.   申请微信公众号 我们要进行微信公众平台的开发,第一步当然是要有公众号了.什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵.通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构.你自己使用的普通微信

《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

接口驱动程序开发

接口驱动程序开发 介绍了在Android开发环境下,采用Java编写接口驱动程序.包括LED接口及驱动程序.背光调节控制程序.键盘接口及驱动程序.UART串行口及通信程序.Wi-Fi接口及通信程序.3G接口及驱动程序.MediaPlayer播放器程序等. LED灯由GPIO接口的GPJ3_0和GPJ3_1控制.GPIO接口中有控制寄存器.数据寄存器和上拉寄存器.GPIO接口控制背光,改变定时器0的PWM输出波形控制背光亮度,实现对LED灯背光亮度的调节. 在实验平台上配置有矩阵式键盘,由GPIO

高并发业务接口的开发思路(转)

高并发业务除了需要有支撑高并发的服务器架构,还需要根据业务需求和架构体系..设计出合理的开发方案,这里根据一个实践过业务场景分析开发思路,罗列出高并发接口需要注意的点,以及设计上的巧思,共勉之,望共鸣 . 业务场景 业务:今日好货.交互端:IOS/Andorid.需求点:(实际业务会复杂些,为了容易理解,这里简化需求点)提供最新的好货商品信息列表,支持分页.需要时时获取最新的商品数据列表,以下情况商品信息会发生变化● 品数据字段更新(人为编辑,热度字段更新,等)● 不定时上新,在固定时段会有大量

实现Servlet接口来开发Servlet程序

import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; //实现Servlet接口来

MVC接口式开发 封装统一请求方法

由于公司需要用到接口式开发,所以所以业务逻辑都写在webapi ,web端主要做调用,为了使开发方便,特此封装出统一请求的方法,页面调用只需写接口地址就行,话不多说,直接上代码. 1 public class ProxyHandlerController : BaseController 2 { 3 // 4 // GET: /ProxyHandler/ 5 public ActionResult ProcessRequest() 6 { 7 try 8 { 9 var Request = Ht

Jaxb的有点与用法(bean转xml的插件,简化webservice接口的开发工作量)

一.jaxb是什么 JAXB是Java Architecture for XML Binding的缩写.可以将一个Java对象转变成为XML格式,反之亦然.     我们把对象与关系数据库之间的映射称为ORM,其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping).原来JAXB是Java EE的一部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的一贯做法.JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(J

类与类,类与接口,接口与接口的关系 学习

A:类与类,类与接口,接口与接口的关系 a:类与类: 继承关系,只能单继承,可以多层继承. b:类与接口: 实现关系,可以单实现,也可以多实现. 并且还可以在继承一个类的同时实现多个接口. c:接口与接口: 继承关系,可以单继承,也可以多继承. class Demo3_Interface { public static void main(String[] args) { System.out.println("Hello World!"); } } interface InterA