restful风格接口与http协议状态表述

rest是面向资源的(名词)
rest通过uri暴露资源时不要再uri中出现动词
象是这样 GET /api/dogs/{id}
用HTTP方法体现对资源的操作
·get方法获取资源
.post方法添加资源
.put方法修改资源
.delete方法删除资源
HTTP状态码
通过HTTP状态码体现动作的结果,不要自定义
200 OK
400 错误请求(像是用户输入错误)
500 系统内部发生错误(像是系统自己代码的错误)
get方法和查询参数不应该改变数据
改变数据交给post put delete
使用复数名词
/dogs而不是/dog
复杂资源关系表达式
/cars/711/drivers 返回使用car711号的所有司机
/cars/711/drivers/4 返回使用car711的所有司机中的四号司机
高级用法::HATEOAS
超媒体所谓应用状态的引擎,restful api最好做到返回结果中提供链接,连向其他API方法,使得 用户不查文档也知道下一步做什么
为集合提供过滤 排序 选择 和分页等功能

版本化你的API
在请求前面加上API版本

符合标准的代码

package com.caohao.bootlearn.model;

public class Article {

    /**
     * id : 1
     * name : caohao
     */

    private int id;
    private String name;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

package com.caohao.bootlearn.model;


import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
public class AjaxResponse {
    private boolean isok;//是否成功
    private int code;//状态码
    private String message;//信息
    private Object data;//数据


    public static AjaxResponse SUCCESS(Object data){
        AjaxResponse ajaxResponse = new AjaxResponse();
        ajaxResponse.setIsok(true);
        ajaxResponse.setCode(200);
        ajaxResponse.setMessage("Success");
        ajaxResponse.setData(data);
        return ajaxResponse;
    }
    public static AjaxResponse SUCCESS(){
        AjaxResponse ajaxResponse = new AjaxResponse();
        ajaxResponse.setIsok(true);
        ajaxResponse.setCode(200);
        ajaxResponse.setMessage("Success");
        return ajaxResponse;
    }

    public static AjaxResponse requestFalse(Object data){
        AjaxResponse ajaxResponse = new AjaxResponse();
        ajaxResponse.setIsok(false);
        ajaxResponse.setCode(400);
        ajaxResponse.setMessage("requestFalse");
        ajaxResponse.setData(data);
        return ajaxResponse;
    }
    public static AjaxResponse requestFalse(){
        AjaxResponse ajaxResponse = new AjaxResponse();
        ajaxResponse.setIsok(false);
        ajaxResponse.setCode(400);
        ajaxResponse.setMessage("requestFalse");
        return ajaxResponse;
    }
}

package com.caohao.bootlearn.controller;


import com.caohao.bootlearn.model.AjaxResponse;
import com.caohao.bootlearn.model.Article;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@RequestMapping("/rest")
public class RestFulTestController {
    @RequestMapping(value = "/Articles",method = RequestMethod.POST,produces = "application/json")
    //@PostMapping("/Articles")
    public AjaxResponse saveObject(@RequestBody Article article){

        log.info("saveArticles"+article);
        //.....
        return AjaxResponse.SUCCESS(article);
    }
    @DeleteMapping("/Articles/{id}")
    public AjaxResponse deleteArticle(@PathVariable int id){
        log.info("delete Articles"+id);
        //.....
        return AjaxResponse.SUCCESS(id);
    }
    @PutMapping("/Articles/{id}")
    public AjaxResponse updateArticle(@RequestBody Article article,@PathVariable int id){
        log.info("changeArtices"+article);
        //......
        return AjaxResponse.SUCCESS(article);
    }
    @GetMapping("/Articles/{id}")
    public AjaxResponse getArticle(int id){
        log.info("getArticles"+id);
        //.....
        return AjaxResponse.SUCCESS(id);
    }

}

代码测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值