Spring Boot 开发入门--- Restful接口的Web服务

前言:本文内容提示

在Idea上创建基于Spring Boot的web 项目,当客户端浏览器分别用get、put、post等访问该web服务资源时,服务器能做出正确的结果。
装Postman 软件,用Postman对你的web进行测试。

一、在IDEA上创建基于Spring Boot的web项目

建立项目的具体步骤见:
生成一个Spring Boot 项目

二、编码

1. 建包

演示的功能就是提供一个计数器功能,可以初始化计数器,修改计数器,查询计数器当前值。没有使用数据库,直接用一个单例类来模拟了,项目结构如下:
src—main—java—com.example.demo下,新建包名 bean、controller、manage、service;
分别新建java文件:Count、DemoController、DemoManage、DemoService

请添加图片描述

2. 具体代码

Count:

package com.example.demo.bean;

public class Count {
    
    
    private int count;

    public int getCount() {
    
    
        return count;
    }

    public void setCount(int count) {
    
    
        this.count = count;
    }
}

DemoController:

package com.example.demo.controller;

import com.example.demo.bean.Count;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.demo.service.DemoService;

@RestController
public class DemoController {
    
    

    @Autowired
    DemoService demoService;

    @RequestMapping(value = "/me/count", method = RequestMethod.PUT)
    @ResponseBody
    public void initCount(@RequestBody Count count){
    
    
        demoService.initCount(count);
    }

    @RequestMapping(value = "/me/count", method = RequestMethod.POST)
    @ResponseBody
    public void modifyCount(@RequestBody Count count){
    
    
        demoService.addCount(count);
    }

    @RequestMapping(value = "/me/count", method = RequestMethod.GET)
    @ResponseBody
    public  Count getCount()
    {
    
    
        return demoService.getCount();
    }
}

DemoManage:

package com.example.demo.manager;


public class DemoManager {
    
    
    private int count = 0;
    private static DemoManager instance = new DemoManager();
    private DemoManager(){
    
    }
    public static DemoManager getInstance(){
    
    
        return instance;
    }
    public synchronized void addCount(int i){
    
    
        count = count + i;
    }
    public synchronized  void minusCount(int i){
    
    
        count = count -i;
    }
    public int getCount(){
    
    
        return count;
    }
    public void initCount(int i){
    
    
        count = i;
    }
}

DemoService:

package com.example.demo.service;

import com.example.demo.manager.DemoManager;
import com.example.demo.bean.Count;
import org.springframework.stereotype.Service;

@Service
public class DemoService {
    
    
    public void addCount(Count count){
    
    
        if (count != null){
    
    
            DemoManager.getInstance().addCount(count.getCount());
        }
    }
    public void minusCount(Count count){
    
    
        if (count != null) {
    
    
            DemoManager.getInstance().minusCount(count.getCount());
        }
    }
    public Count getCount()
    {
    
    
        Count count = new Count();
        count.setCount(DemoManager.getInstance().getCount());
        return count;
    }
    public void initCount(Count count){
    
    
        if (count != null) {
    
    
            DemoManager.getInstance().initCount(count.getCount());
        }
    }
}

三、运行结果

在这里插入图片描述

四、Postman测试restful接口

1. 何为Postman

Postman 是一个Chrome的一个插件工具,是一种常用的接口测试工具,可以发送几乎所有类型的HTTP请求。Postman适用于不同的操作系统,Postman Mac、Windows X32、Windows X64、Linux系统,还支持postman 浏览器扩展程序、postman chrome应用程序等。

2. 测试

1)确认web地址

链接端口号默认为8080;
URL:http://localhost:8080/me/count
地址 在 DemoController 里确认:

请添加图片描述

2)用get、put、post进行测试

打开postman并输入web地址,分别用get、put、post进行测试:
URL都是:/me/count,只是分PUT、POST和GET,其中PUT用于初始化,POST用于修改(这里修改是累加),GET用于查询。

① 测试 get 接口,会得到默认参数 0:
请添加图片描述

  • 测试 put 接口,在下面选择body——raw——json,输入下列代码:
    {
    “count”: 100
    }

    无输出,如图:
    请添加图片描述

  • 再用 get 获取结果,结果改变

请添加图片描述

  • 测试post接口,body代码不变:

请添加图片描述

  • 再用get调用,结果变为200(累加:100+100):

请添加图片描述

小小的总结

Postman测试让我们直观的了解到程序运行是否能做出正确的响应;
Postman测试接口十分方便,是一个很好的测试工具。

参考文献

  1. 使用IDEA创建一个SpringBoot服务,并创建三个restful风格的接口
  2. spring boot的初步入门,并建立三个restful接口
  3. postman测试restful接口
  4. 创建基于Spring Boot的web项目并用postman调试

Guess you like

Origin blog.csdn.net/YouthBlood9/article/details/120392168