RestFul风格案例

561 阅读2分钟

RestFul通用风格

@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。

请求方式请求路径功能
GET /api/emp/ 返回员工列表
GET /api/emp/1 返回员工编号为1的员工对象
POST /api/emp 增加一个员工,参数为Emp对象JSON格式
PUT /api/emp/1 更新员工,参数empno为1,json格式的员工
DELETE /api/emp/1 删除编号为1的员工对象
DELETE /api/emp/ 删除所有员工

1、【示例代码】RestFul风格参数传递

@RestController
@RequestMapping("/admin")
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    /**
     * @param page
     * @param limit
     * @param keywords
     * @return
     * @Author CodeSleep
     * @Date: 2021/8/19 21:27
     * @Description: //TODO 分页和模糊查询所有文章控制器
     * GET http://127.0.0.1:8080/admin/getarticle
     */
    @GetMapping("/getarticle")
    public ResponseData<ArticleAndTypeDto> getAllArticle(
        @RequestParam(name = "page", required = true, defaultValue = "1") int page,
        @RequestParam(name = "limit", required = true, defaultValue = "10") int limit,
        @RequestParam(name = "keywords", required = true, defaultValue = "") String keywords) {
        ResponseData<ArticleAndTypeDto> articleList = articleService.getArticleList(page, limit, keywords);
        return articleList;
    }

    /**
     * @param articleID
     * @return
     * @Author CodeSleep
     * @Date: 2021/8/19 21:27
     * @Description: //TODO 通过ID删除文章控制器
     * DELETE http://127.0.0.1:8080/admin/delarticle/{{articleID}}
     */
    @DeleteMapping("/delarticle/{articleID}")
    public ResponseData deleteArticleByID(@PathVariable("articleID") int articleID) {
        ResponseData responseData = articleService.deleteArticleByID(articleID);
        return responseData;
    }

    /**
     * @param articleID
     * @return
     * @Author CodeSleep
     * @Date: 2021/8/20 10:06
     * @Description: //TODO 文章批量删除
     */
    @DeleteMapping("/delarticle/{articleID}")
    public ResponseData deleteAllArticleByID(@PathVariable("articleID") int articleID) {
        ResponseData responseData = articleService.deleteArticleByID(articleID);
        return responseData;
    }

    /**
     * @param article
     * @return
     * @Author CodeSleep
     * @Date: 2021/8/19 21:28
     * @Description: //TODO 增加文章控制器
     * POST http://127.0.0.1:8080/admin/addarticle
     */
    @PostMapping("/addarticle")
    public AjaxOperateResponse addArticle(@RequestBody ArticleEntity article) {
        AjaxOperateResponse response = new AjaxOperateResponse(200, articleService.addArticle(article) ? "增加成功" : "增加失败");
        return response;
    }

    /**
     * @param articleStatus
     * @param articleID
     * @return
     * @Author CodeSleep
     * @Date: 2021/8/20 9:08
     * @Description: //TODO 修改文章状态
     * PUT http://127.0.0.1:8080/admin/updatest/{{articleStatus}}/{{articleID}}
     */
    @PutMapping("/updatest/{articleStatus}/{articleID}")
    public ResponseData updateArticleStatus(
        @PathVariable("articleStatus") int articleStatus,
        @PathVariable("articleID") int articleID) {
        ResponseData responseData = articleService.updateArticleStatus(articleID, articleStatus);
        return responseData;
    }
}

2、【示例1】传递参数

@RequestMapping(value="/add3/{userId}/{userName}/a")
public String requestParam3(@PathVariable(value="userId") int userId,@PathVariable("userName") String userName)
{
    System.out.println("userId :"+userId+" ,userName :"+userName);
    return "add";
}

说明:当浏览器地址栏输入: http://localhost:8080/SpringMvcDemo03/hc5/add3/888/laowang/a

可以访问到该方法:同时控制台可以得到:

userId :888

userName :laowang

即通过访问该方法同时传递参数userId :888 ;userName :laowang

3、【示例2】传递参数

@PutMapping("/updatest/{articleStatus}/{articleID}")
public ResponseData updateArticleStatus(
    @PathVariable("articleStatus") int articleStatus,
    @PathVariable("articleID") int articleID) {
    ResponseData responseData = articleService.updateArticleStatus(articleID, articleStatus);
    return responseData;
}

说明:当浏览器地址栏输入: http://localhost:8080/updatest/1/0

可以访问到该方法:同时控制台可以得到:

articleStatus:0

articleID:1

即通过访问该方法同时传递参数articleStatus:0, articleID:1可修改文章ID为1的文章状态为0

4、【示例3】传递参数

@DeleteMapping("/delarticle/{articleID}")
public ResponseData deleteArticleByID(@PathVariable("articleID") int articleID) {
    ResponseData responseData = articleService.deleteArticleByID(articleID);
    return responseData;
}

说明:当浏览器地址栏输入: http://localhost:8080/delarticle/1

可以访问到该方法:同时控制台可以得到:

articleID:1

即通过访问该方法同时传递参数articleID:1,并删除ID为1的这篇文章