目录
一、创建地址:
1、ApiConstant类中创建
首先在ApiConstant类中创建路由地址,命名尽量全部大写,例如:
public final class ApiConstant {
private ApiConstant(){}
public static final String API_PRODUCES="application/json";
public static final String ROUTE_AUTH_ROOT="api/v1";
public static final String ROUTE_AUTH_LOGIN="/login";
public static final String ROUTE_AUTH_EXISTS="/exists/{user}";
public static final String ROUTE_AUTH_REGISTER="/register";
public static final String ROUTE_UPLOAD="/upload";
public static final String ROUTE_USER_ROOT="api/v1/admin";
public static final String ROUTE_USER_ALL="/";
public static final String ROUTE_USER_PAGE="/page";
public static final String ROUTE_USER_SEARCH="/search/{kw}";
public static final String ROUTE_USER_APPLY="/apply";
public static final String ROUTE_USER_APPROVE="/approve";
public static final String ROUTE_USER_DECLINE="/decline";
public static final String ROUTE_USER_BAN="/ban";
public static final String ROUTE_COURSE_ROOT="api/v1/course";
public static final String ROUTE_COURSE_ALL="/";
public static final String ROUTE_COURSE_PAGE="/page";
public static final String ROUTE_COURSE_OPEN="/open";
public static final String ROUTE_COURSE_OPEN_PAGE="/open/page";
public static final String ROUTE_COURSE_TEACHER="/teacher";
public static final String ROUTE_COURSE_STUDENT="/student";
public static final String ROUTE_COURSE_ADD="/add";
public static final String ROUTE_COURSE_PUT="/put/{id}";
public static final String ROUTE_COURSE_OPEN_CLOSE="/oc";
public static final String ROUTE_COURSE_DELETE="/del";
}
二、构造器注入
1、@Autowired
它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。
使用方法:常用的是使用构造方法注入,例如:
@Autowired
public CourseApiController(CourseService service, UserService uService){
this.service=service;
this.uService = uService;
}
三、使用路由注解:
1、@Controller和@RestController
区别:@Controller 包括了 @RestController。@RestController 是 Spring4 后新加的注解,从 RestController 类源码可以看出 @RestController 是 @Controller 和 @ResponseBody 两个注解的结合体。
-
@Controller 一般应用在有返回界面的应用场景下.
例如,管理后台使用了 thymeleaf 作为模板开发,需要从后台直接返回 Model 对象到前台,那么这时候就需要使用 @Controller 来注解。
-
@RestController 如果只是接口,那么就用 RestController 来注解.
例如前端页面全部使用了 Html、Jquery来开发,通过 Ajax 请求服务端接口,那么接口就使用 @RestController 统一注解。
使用方法:直接在主类上引入使用,例如:
@RestController
public class CourseApiController {
}
2、@RequestMapping
用于将任意HTTP 请求映射到控制器方法上。注解在类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
使用方法:在注解后输入路由地址,例如:
@RequestMapping(ApiConstant.ROUTE_USER_ROOT)
public class UserApiController {
}
3、@GetMapping
用于将HTTP GET请求映射到特定处理程序方法的注释,无参,@RequestParam 和@PathVaiable的情况下使用GetMapping,用于定义HTTP GET请求的URL路径。当客户端发送HTTP GET请求时,Spring Boot会自动将请求映射到具有相应URL路径的控制器方法上。
使用方法:在注解后输入路由地址,例如:
@GetMapping(ApiConstant.ROUTE_USER_ALL)
public ApiResult getUser(@RequestParam String token){
List<VmUser> users=new ArrayList<>();
service.get().forEach(user -> users.add(VmUser.create(user,true)));
return new ApiResult(true,users.size()+"",users);
}
4、@PostMapping
用于将HTTP POST请求映射到特定处理程序方法的注释,如果传的参数是@RequestBody ,多参或者传对象的情况下使用@PostMapping注解。
使用方法:在注解后输入路由地址,例如:
@PostMapping(ApiConstant.ROUTE_COURSE_OPEN_CLOSE)
public ApiResult openClose(@RequestBody CourseOpenInfo info){
String token=info.getToken();
String strCourseId=info.getCourse_id();
boolean open=info.isOpen();
if (StringUtil.isEmpty(token)||StringUtil.isEmpty(strCourseId)){
return new ApiResult(false,Messages.MISS_ARGS.toString(), null);
}
Course course=service.openCloseCourse(UUID.fromString(strCourseId),open,token);
if (course==null){
return new ApiResult(false,Messages.NO_PERMISSION.toString(), null);
}
return new ApiResult(true,Messages.SUCCESS.toString(), VmCourse.create(course,true));
}