restful API 在项目中的具体体现

0、写在前面

什么是restful,网上各种文章已经说的非常详细了,但是对于我这个菜鸟来说,明白它是什么并不能帮助我明白在项目如何中使用这种风格,经过参考别人的项目,我大概了解了如何在一个web项目中使用restful风格,特此记录一下。

1、如何在项目中使用restful风格

restfulAPI并没有固定的写法,只需要遵循restfulAPI的规则即可。
在这里记录一个最常见的写法
构造一个RestfulApi的实体类
在处理完请求后,调用实体类中的静态方法,返回RestfulApi实例即可

package com.tianqicode.testjpa.bean;

public class ResultApi {

    /**
     * 定义静态的状态码
     */
    public static int SUCCESS_CODE = 200;
    public static int FAIL_CODE = 400;

    /**
     * 返回状态码,表示一种错误类型
     * 请求成功,状态码为200
     */
    private int code;

    /**
     * 对错误代码的详细解释
     */
    private String message;

    /**
     * 返回的结果包装在value中,value可以是单个对象
     */
    private Object data;

    //无参的构造函数
    public ResultApi() {

    }

    //含参的构造函数
    public ResultApi(int code, String message, Object data) {

        this.code = code;
        this.data = data;
        this.message = message;
    }

    //返回无数据,无描述的成功result对象
    public static ResultApi success() {
        return new ResultApi(SUCCESS_CODE,null,null);
    }

    //返回仅无数据的成功result对象
    public static ResultApi success(String message) {
        return new ResultApi(SUCCESS_CODE,message,null);
    }
    
    //返回有数据无描述的成功result对象
    public static ResultApi success(Object data) {
        return new ResultApi(SUCCESS_CODE,"",data);
    }
    
    //返回失败的result对象并添加描述
    public static ResultApi fail(String message) {
        return new ResultApi(FAIL_CODE,message,null);
    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

例如实现一个简单的登录功能

	@PostMapping("api/login")
    @ResponseBody
    public ResultApi loginService(@RequestBody User loginUser) {

        String name = loginUser.getUsername();
        String password = loginUser.getPassword();

        System.out.println(name);

        User user = userService.findByName(name);

        System.out.println(user);
        System.out.println(loginUser);

        if (user != null) {
            if (user.getPassword().equals(password)) {
                System.out.println("登陆成功");
            } else {
//                System.out.println("密码错误");
                return ResultApi.fail("密码错误!");
            }
        } else {
//            System.out.println("用户不存在");
            return ResultApi.fail("用户不存在!");
        }
        return ResultApi.success("登陆成功");

    }
发布了30 篇原创文章 · 获赞 2 · 访问量 610

猜你喜欢

转载自blog.csdn.net/qq_43585377/article/details/104722649