+2

Spring Data Rest & HAL (Hypertext Application Language)

Hypertext Application Language hay còn gọi là HAL được sử dụng trong project Spring khi mà project có Spring Data Rest. Nó sử dụng để dễ dàng tạo các link đến các tài nguyên API, nói dễ hiểu công dụng của nó là để cho dev phía client hoặc user dễ truy cập và đọc các Method có sẵn trong Spring Data JPA hoặc các response được trả về dễ dàng hơn.

Ảnh minh hoạ: image.png

Cách để sử dụng HAL Explorer trong project spring

  • Đầu tiên trong pom.xml add 2 dependency như sau:
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-rest</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-rest-hal-explorer</artifactId>
		</dependency>

Sau đấy spring sẽ tự tạo ra bean có tên là profileController, **nếu như bị lỗi Already define thì là do trong controller đã có sẵn profileController. Vì thế hãy đổi tên của controller đấy ** Example:

@Controller("profileControllerBean")/* Đổi tên nào tuỳ ae */
public class ProfileController {
  • Vậy là xong rồi, để truy cập vào thì chỉ cần vào địa chỉ /profile trong đấy sẽ có các href cụ thể của từng cái, khi nhấn vào thì sẽ hiển thị lên 1 meta data về các method mà có thể sử dụng trong spring data jpa image.png

  • Nếu như muốn ẩn 1 số cái không cần thiết như pwd hay confim pwd thì chỉ cần thêm annotation @JsonIgnore là xong.

  • 1 Số ví dụ khi sử dụng : Ví dụ mình muốn list 1 bảng các contact theo trình tự name và size=3 thì mình có thể localhost:8080/contact?page=0&size=3&sort=name,asc

  • Tiếp đến để dùng HAL Explorer page thì đầu tiên mình phải config trong Application.properties

spring.data.rest.basePath=/data-api

mình để base url là /data-api, vậy thì chỉ cần vào đấy là sẽ có

-Và cuối cùng, để Secure thì xài spring-security thui

http.csrf().ignoringRequestMatchers("/api/**").ignoringRequestMatchers("/data-api/**").and()
                .authorizeHttpRequests()
                .requestMatchers("/data-api/**").authenticated()
                return http.build();

Cám ơn các bạn đã đọc bài viết này 😊


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí