文档章节

使用SpringMVC开发Restful API(1)-常用注解的使用

o
 osc_fmg49rzg
发布于 2019/03/21 21:56
字数 973
阅读 3
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  SpringMVC中的常用注解用法:

1. @Controller:一般用于类,表明该bean是一个Controllerbean

2.@ResponseBody:用于类和方法,用于方法则表明中该方法返回的是json串,用于类则表明类中所有的方法返回的都是json串。

3.@RestController:相当于@Controller + @ResponseBody

4.@RequestMapping:映射http请求urljava的方法。它有多个参数选项,一般常用的参数选项有:

  pathurl相对地址,第一个字符必须为“/”,一般必填,value参数的别名。

    示例:@RequestMapping(path="/mypath")

  methodurl请求类型,可以为:enum RequestMethod{GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE}中的一个或多个

    示例:@RequestMapping(path="/myPath",method={RequestMethod.GET, RequestMethod.POST})

  consumesurl请求必须的Content-Type类型。

    示例:@RequestMapping(path="/myPath",consumes = {"text/plain", "application/*"})

  providesurl请求返回的类型

    示例:@RequestMapping(path="/myPath",produces = "application/json; charset=UTF-8")

5.@PostMappingurlpost请求,相当于@RequestMapping(method=RequestMethod.POST)但只能用在方法上,不能用在类上,其他参数和RequestMapping用法完全相同。在Restful API中代表添加

6.@GetMapping同PostMapping。在Restful API中代表查找

7.@PutMapping同PostMapping。在Restful API中代表更新

8.@DeleteMapping:同PostMapping。在Restful API中代表删除

9.在4、5、6、7、8这几个请求映射注解中path可以有多种使用方法。

  9-1 如果在类上加了@RequestMapping,其他类上加了别的映射注解,那么到该方法的请求地址就是类上的映射注解的path+方法上的映射注解的path

  9-2 形如@GetMapping("/user/{id}") 表示给请求url中的/user/后的片段取了个名为id,这个片段在参数中可以用@PathVariable注解获得到

  9-3 形如@GetMapping("/user/{id:\\d+}") 表示通过正则表达式来限制URL中请求资源类型,这里表示id只能为数字

10.@RequestParam:用于方法的参数,表示映射请求参数到java的参数,它有多个参数选项,一般常用的参数选项有:

  name:表示映射请求的参数名,它会从请求的参数中找到和name指定的参数名的参数的值,然后赋给指定方法中的参数。

    示例:public UserDto getUserInfo(@@RequestParam(name="id")String idNo)  表示将会从请求的参数中找到keyid的参数并将其值赋给idNo

  required:布尔值,表示请求参数中必须的有该参数

  defaultValue:如果请求参数中没有该参数,那么会给指定的方法的参数一个默认值。

11.@PathVariable:用于方法的参数,它会从映射指定的url片段到java的参数中,一般常用的参数选项有:

  name:表明要指定哪一个url片段

  requiredurl片段中是否必须要有该片段

    示例:假如方法头部添加了@GetMapping("/user/{id}"),方法的参数中有一个@PathVariable(name="id", required=true)String idNo参数,那么表明请求url中必须得有{id}该片段,且会把该片段赋给idNo参数

 

二 SpringMVC中自定义异常捕获

12@ControllerAdvice:用于类,springMVC会将这个@ControllerAdvice标注的类注册成一个特殊的bean,这个bean主要用来拦截Contorller层抛出的异常。

13.@ExceptionHandler:用于被@ControllerAdvice标注的类中的方法,这个方法会处理指定的异常,并将异常返回给前端。一般常用的参数选项有:

  Class<? extends Throwable>[] value() default {}:表明要捕获指定的异常类

14.@ResponseStatus:搭配@ExceptionHandler一起使用,表明抛出的异常状态码和异常原因,一般常用的参数选项有:

  HttpStatus code() default HttpStatus.INTERNAL_SERVER_ERROR:表明要抛出的异常状态码,默认为500

  reason:表明抛出的异常原因

    示例:

@ControllerAdvice
public class ExceptionHandlerController {
    
    @ExceptionHandler(UserException.class)
    @ResponseStatus(code=HttpStatus.INTERNAL_SERVER_ERROR, reason="描写原因")
    @ResponseBody
    public Map<String, Object> handlerUserException(UserException ex){
        Map<String, Object> errMap = new HashMap<>();
        errMap.put("id", ex.getUserId());
        return errMap;
    }
}

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
_001_Swagger_Spring Boot中使用Swagger2构建强大的RESTful API文档

Spring Boot中使用Swagger2构建强大的RESTful API文档 由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目...

VeryHotShine
2019/09/10
0
0
Spring Boot 集成 Swagger 构建接口文档

在应用开发过程中经常需要对其他应用或者客户端提供 RESTful API 接口,尤其是在版本快速迭代的开发过程中,修改接口的同时还需要同步修改对应的接口文档,这使我们总是做着重复的工作,并且...

武培轩
06/07
0
0
Spring Boot 集成 Swagger 构建接口文档

在应用开发过程中经常需要对其他应用或者客户端提供 RESTful API 接口,尤其是在版本快速迭代的开发过程中,修改接口的同时还需要同步修改对应的接口文档,这使我们总是做着重复的工作,并且...

武培轩
06/07
0
0
spring boot 1.5.4 集成Swagger2构建Restful API(十八)

上一篇博客地址:springboot 1.5.4 整合rabbitMQ(十七) 1 Spring Boot集成Swagger2构建RESTful API文档 1.1 Swagger2简介 Swagger2官网:http://swagger.io/ 由于Spring Boot能够快速开发、...

wyait
2017/11/03
0
0
Spring Boot中使用Swagger2构建强大的RESTful API文档

由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业...

osc_n86o8vc0
2018/08/02
2
0

没有更多内容

加载失败,请刷新页面

加载更多

使用amoeba实现mysql读写分离

转载马士兵连老师笔记 使用amoeba实现mysql读写分离 1、什么是amoeba? Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、...

兵荒马乱的青春
25分钟前
0
0
学Vue,就要学会vue JSX(二)

学习JSX,先了解一下createElement 提到JSX,不可避免的就要提到createElement,当你看完本节,你会发现,奇怪的知识又增多了。ok,我们接着上一部分继续讲。这一次的准备工作是了解createEleme...

osc_kurqu050
25分钟前
17
0
学Vue,就要学会vue JSX(三)

是时候使用JSX代替createElement了 接着上面的讲,当我们看到上面用createElement去实现组件,太麻烦了,别说工作效率提高了,就是那些嵌套可以嵌套正确就很赞了,所以我们需要用JSX去简化整...

osc_tq5hz9vv
27分钟前
13
0
protocol buffer使用

protocol buffer使用例子 protocol buffer是什么 https://developers.google.com/protocol-buffers 这是protocol buffer的官方网站,上边有详细的使用方式。 一般常见的序列和反序列方式就是...

RandomObject
27分钟前
7
0
小白的前端之路-HTMl

HTML——超文本标记语言 HTMl里面有标签,标签又分为单标签和双标签,也分为行级元素和块级元素 标签是用<>包裹起来的,而且必须要有<>,否则会直接显示在浏览器上面哦 现在介绍一下常用标签...

osc_e45irv7l
28分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部