亲测三天使用springboot快速写出基础接口

三天时间包括配置好环境:idea2021,jdk17,jdk11,配置环境步骤在我的收藏夹中。两个jdk都配置吧,省的后面啰嗦。

(抱歉,写的没有目录箭头那些,将就看把,我从1018到1021,三天从配置环境到运行出最基础的接口,这是我个人总结,注意,需要至少学过一点软件基础的,至少配置环境得会吧,然后各种语言代码的意思都差不多,不懂就去搜,要不让ai给你写)

先明确大概要干什么才能copy别人的代码进行运行:

用idea创建一个空project,选择springboot,在名为demo2的project中,controller下面的那些类和pojo下的那些类,是需要自己创建,在里面写代码的,static中的1.jpg,2.jpg等等是接口需要访问到的图片存放地址,注意,static是需要创建在resources中的。而controller和pojo是需要自己创建在com.example.demo2中的。其余都是创建空project自带的,或者运行代码生成的。

运行该project就是点进Demo2Application,点绿色三角进行运行。(文末写好的接口代码可以附上)

一、创建一个空project,并且是springboot的

(为什么idea可以写springboot,因为idea集成了spring的各种功能,其中包括springboot,除此之外idea还能代替navicat,sqlyog等,idea直接成为数据库的图形化工具,除了下载mysql不需要多下软件了,不过这里先只说springboot,因为我还没学到操作数据库)

注意:左侧选择spring 右侧注意jdk都要选择一致的,就是17,17那里。demo代表新建project的名字,可以自定义,type选择maven不动,language选择java,location可以自己定义存在某个地址。注意:location末尾和artifact是会自动一致的。全部设置好选择next。

注意,我当前的时间是3.1.5版本的springboot,它默认支持的是jdk17,所以我叫你们下17,当然你也可以选择其他版本的sprinboot,然后配置对应支持的jdk版本。不过就是啰嗦点。

要在web中选择spring web,并且勾选上面的download,springboot的版本也要选择。最后选finish,就创建好啦。

新创建好的project就长这样,pom.xml是我们需要看的,这里面放的是依赖,jar包,就是说你的代码需要用到什么,都声明在这里,右边代码中有个3.1.5,就是springboot的版本,下面有个java.version,是17,就是jdk的版本,but我这里居然又报错了,泽,反正步骤就是这样,具体报错原因我还不知道,但是有时候又是成功的。接下来就是创建class。

二、创建写代码的地方

这是创建成功的,java会变成蓝色,我们只需要在自带的com.example.demo2下创建controller 和pojo就可以了,用到图片的话,就在resources中创建static。

在com.example.demo2上右键选择new,java class

输入controller,再创一个pojo,一般来说这两个命名大家都是默认这样的,别自己起。(黑马视频是这样)

然后再在这两个下面创建自己起名的class

方法一样。

注意 RequestController中写了pojo中包含的所有的控制类。而pojo中所有定义的类的内容都和RequestController中的控制类有关。看看例子。

第二个:

下面这个就是控制类,前面有个@的,后面跟着的绿色getWoman就是你设置的,前端输入的接口名,输入这个就能访问接口中的信息惹。

再看一个:

这result很特殊,这是限制端口返回信息的格式的。

看看端口返回的内容:

一般都是 code、msg、data。code200代表成功,msg就是成功,data就是接口传给前端的数据。注意这个数据是后端自己写的。result类就是控制每个接口传送的信息都是同样的格式。所以每个控制类都得写上result,看看文末的代码就懂了。

好了现在你只需要按照自己的需求创造class,并在其中写入符合接口需求的代码就能运行了。

假如接口要求为:

名字为猜你喜欢,内容为图片、描述、价格、销量。

则需要在pojo中定义一个recommend类,并在RequestController中添加对应的recommend的控制类代码

package com.example.demo2.pojo;//pojo下的recommend类的代码

public class Recommend{//猜你喜欢
    private int ID;//id是默认要有的,唯一标识
    private String Image;//服装图片
    private String Desc;//服装描述
    private float Price;//价格
    private int SaleNumber;//销量

//下面是get、set方法和tostring方法,声明好上面的信息后,直接按alt+insert就可以选择自动创建了,注意全选,选择的时候要按住ctrl然后鼠标去点。

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getImage() {
        return Image;
    }

    public void setImage(String image) {
        Image = image;
    }

    public String getDesc() {
        return Desc;
    }

    public void setDesc(String desc) {
        Desc = desc;
    }

    public float getPrice() {
        return Price;
    }

    public void setPrice(float price) {
        Price = price;
    }

    public int getSaleNumber() {
        return SaleNumber;
    }

    public void setSaleNumber(int saleNumber) {
        SaleNumber = saleNumber;
    }

    @Override
    public String toString() {
        return "Recommend{" +
                "ID=" + ID +
                ", Image='" + Image + '\'' +
                ", Desc='" + Desc + '\'' +
                ", Price=" + Price +
                ", SaleNumber=" + SaleNumber +
                '}';
    }
}

放在这里按alt+insert

按住ctrl鼠标点全部变成蓝色

点ok

就生成getset方法。

生成tostring:

就好了。保姆级。

------------------------------------------------------------------------------

添加对应的控制类代码:

package com.example.demo2.controller;

import com.example.demo2.pojo.*;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//import javax.xml.transform.Result;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//以上这些都是声明,
//你写完下面的代码自己会出来的,
//可以不用管,如果代码中有单词是红的,
//可能是缺少了对应的import
//按照提示添加就行


@RestController
public class RequestController {
    @RequestMapping ("/recommend")
    public Result recommend(){
        Result result = new Result();

        // 创建一个装Recommend对象的List集合
        List<Recommend> recommendList = new ArrayList<>();

        // 向List集合中添加Recommend对象
        Recommend r1 = new Recommend();
        r1.setID(1);
        r1.setImage("http://192.168.199.146:8080/file/clothes/1.jpg");
//
//注意,这里的地址需要改成自己主机的地址,
//比如我的是位数为113,你自己的多少,自己查下。
//后面的文件地址会在下面解释,如果没有图片要传入,
//可以把图片地址删了,先试试自己能不能运行。
//这些都是多个同样的数据,
//能运行一个就能运行多个。这是因为我这个是对象,
//然后创建了多个对象实例,实例保存数据,
//最终一次性传入多个对象list。好像叫集合。
//就是多个数据用的是集合传给前端。
        r1.setDesc("女士优质双排口西装套装裙");
        r1.setPrice(230.20f);
        r1.setSaleNumber(21340);
        recommendList.add(r1);

        Recommend r2 = new Recommend();
        r2.setID(2);
        r2.setImage("http://192.168.199.146:8080/file/clothes/2.jpg");
        r2.setDesc("女士灰麻色高级小香风短圆领外套");
        r2.setPrice(890.10f);
        r2.setSaleNumber(15320);
        recommendList.add(r2);


        Recommend r3 = new Recommend();
        r3.setID(3);
        r3.setImage("http://192.168.199.146:8080/file/clothes/3.jpg");
        r3.setDesc("男士看似是衬衫实际是鹅绒服轻薄舒适");
        r3.setPrice(1199.09f);
        r3.setSaleNumber(1830);
        recommendList.add(r3);

        Recommend r4 = new Recommend();
        r4.setID(4);
        r4.setImage("http://192.168.199.146:8080/file/clothes/4.jpg");
        r4.setDesc("男士棕色亮面皮衣夹克帅气有型");
        r4.setPrice(370.99f);
        r4.setSaleNumber(2601);
        recommendList.add(r4);

        Recommend r5 = new Recommend();
        r5.setID(5);
        r5.setImage("http://192.168.199.146:8080/file/clothes/5.jpg");
        r5.setDesc("儿童薄羽绒外套藏青色加橘色点缀");
        r5.setPrice(348.80f);
        r5.setSaleNumber(1985);
        recommendList.add(r5);

        Recommend r6 = new Recommend();
        r6.setID(6);
        r6.setImage("http://192.168.199.146:8080/file/clothes/6.jpg");
        r6.setDesc("童趣轻羽绒外套戴帽杏色卡通印花");
        r6.setPrice(280.60f);
        r6.setSaleNumber(2457);
        recommendList.add(r6);


        // 将List集合设置到Result对象的data属性中
        result.setCode(200);
        result.setMsg("success");
        result.setData(recommendList);


        return result;
    }
}

代码复制好了,就运行

点绿色三角,

出现这个spring 就运行成功了,在接口显示界面就是下面这样的。

关于resources中的static怎么设置:

java静态文件映射的问题:就是,如何输入接口就能访问存在自己电脑上的图片?就是下面这个链接的问题

就是添加静态文件(在resources中添加static,然后打开文件夹,把图片拖到static中就行了)

注意命名一般是跟我一样的,叫static。创建完之后就可以在文件夹中找到了。图片拖入static就行。


113是我自己的主机号,需要输入cmd进入然后查询自己的主机号。同理进入别人的就是输入别人的主机号。

b站直接搜:

java静态资源映射,用于解决访问服务端存放的图片问题

创建静态资源


 

 

多层级的定义:

接口要求如下

package com.example.demo2.pojo;
import java.util.List;

public class Category {
    private  Integer id;
    private  String name;
    private  Integer parentCategoryID;
    private  int level;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getParentCategoryID() {
        return parentCategoryID;
    }

    public void setParentCategoryID(Integer parentCategoryID) {
        this.parentCategoryID = parentCategoryID;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    @Override
    public String toString() {
        return "Category{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", parentCategoryID=" + parentCategoryID +
                ", level=" + level +
                '}';
    }
}

//在之前的recommend下面添加该代码
 @RequestMapping("/category")
    public Result axa(){
        List<Category> categoryListLevel1 = new ArrayList<>();
        Result result = new Result();
        Category  c1 = new Category();
        c1.setId(1);
        c1.setName("女装");
        c1.setLevel(1);
        Category  c2 = new Category();
        c2.setId(2);
        c2.setName("男装");
        c2.setLevel(1);
        Category  c3 = new Category();
        c3.setId(3);
        c3.setName("童装");
        c3.setLevel(1);
        Category  c4 = new Category();
        c4.setId(4);
        c4.setName("裙装");
        c4.setParentCategoryID(1);
        c4.setLevel(2);
        Category  c5 = new Category();
        c5.setId(5);
        c5.setName("T-short");
        c5.setParentCategoryID(1);
        c5.setLevel(2);
        Category  c6 = new Category();
        c6.setId(6);
        c6.setName("长袖");
        c6.setParentCategoryID(1);
        c6.setLevel(2);
        Category  c7 = new Category();
        c7.setId(7);
        c7.setName("长裤");
        c7.setParentCategoryID(1);
        c7.setLevel(2);
        Category  c8 = new Category();
        c8.setId(8);
        c8.setName("T-short");
        c8.setParentCategoryID(2);
        c8.setLevel(2);
        Category  c9 = new Category();
        c9.setId(9);
        c9.setName("外套");
        c9.setParentCategoryID(2);
        c9.setLevel(2);
        Category  c10 = new Category();
        c10.setId(10);
        c10.setName("长袖");
        c10.setParentCategoryID(2);
        c10.setLevel(2);
        Category  c11 = new Category();
        c11.setId(11);
        c11.setName("长裤");
        c11.setParentCategoryID(2);
        c11.setLevel(2);
        Category  c12 = new Category();
        c12.setId(12);
        c12.setName("裙装");
        c12.setParentCategoryID(3);
        c12.setLevel(2);
        Category  c13 = new Category();
        c13.setId(13);
        c13.setName("上装");
        c13.setParentCategoryID(3);
        c13.setLevel(2);
        Category  c14 = new Category();
        c14.setId(14);
        c14.setName("下装");
        c14.setParentCategoryID(3);
        c14.setLevel(2);
        categoryListLevel1.add(c1);
        categoryListLevel1.add(c2);
        categoryListLevel1.add(c3);
        categoryListLevel1.add(c4);
        categoryListLevel1.add(c5);
        categoryListLevel1.add(c6);
        categoryListLevel1.add(c7);
        categoryListLevel1.add(c8);
        categoryListLevel1.add(c9);
        categoryListLevel1.add(c10);
        categoryListLevel1.add(c11);
        categoryListLevel1.add(c12);
        categoryListLevel1.add(c13);
        categoryListLevel1.add(c14);

        result.setCode(200);
        result.setMsg("success");
        result.setData(categoryListLevel1);

        return result;
    }

看看这里的层级关系。我也一知半解,但是能运行满足基本要求。。

关于readme.md,readme文件怎么写?看看recommend接口的例子:

别人说用.txt写也行,可以不用.md

README
#Api
##recommmend
`eg :
 `get http://192.168.199.113:8080/recommend`
```json
{
    "code": 200,
    "msg": "success",
    "data": [
        {
            "desc": "法式复古气质吊带连衣裙外搭开衫两件套高级温柔风",
            "id": 1,
            "image": "http://192.168.199.113:8080/Woman1.jpg",
            "price": 288.9,
            "saleNumber": 21340
        },
        {
            "desc": "港味复古chic上衣披肩春秋新款衬衫设计感小众条纹",
            "id": 2,
            "image": "http://192.168.199.113:8080/Woman3.jpg",
            "price": 479.88,
            "saleNumber": 15320
        },
        {
            "desc": "新款宽松直筒工装裤男百搭休闲拖地长裤",
            "id": 3,
            "image": "http://192.168.199.113:8080/man1.jpg",
            "price": 158,
            "saleNumber": 1830
        },
        {
            "desc": "插件开衫连帽卫衣男春秋oversize情侣宽松重磅国潮外套",
            "id": 4,
            "image": "http://192.168.199.113:8080/man2.jpg",
            "price": 233.09,
            "saleNumber": 2601
        },
        {
            "desc": "男童外套2023秋季加绒夹棉恐龙儿童拉链外套",
            "id": 5,
            "image": "http://192.168.199.113:8080/children5.jpg",
            "price": 139,
            "saleNumber": 1985
        },
        {
            "desc": "宝宝棉服秋冬季婴幼儿加厚外套男女通用",
            "id": 6,
            "image": "http://192.168.199.113:8080/children6.jpg",
            "price": 230,
            "saleNumber": 2457
        }
    ]
}
```
*image:图片url
*desc:商品描述

格式就是这样:中间写的是接口运行输出的信息。

暂时到这里。

看黑马javaweb这几门课。

数据库操作的话,看mybatis。目前还没涉及到。我还没学完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值