HAL 브라우저와 관련된 스프링 데이터 REST를 살펴보고 있습니다. 나는 http://docs.spring.io/spring-data/rest/docs/current/reference/html/#_the_hal_browser에있는 문서를 따라왔다.스프링 데이터 REST - HAL 브라우저 - API 루트가 아닌 HAL 브라우저 HTML을 반환합니다.
http://localhost:8080
으로 이동하면 예상대로 나를 http://localhost:8080/browser/index.html#/
으로 리디렉션하고 HAL 브라우저가 표시됩니다. 내 문제는 내 API의 루트에 대한 세부 정보를 표시하는이 페이지가 아니라 자체를 표시하려고하는 것입니다. 예를 들어 응답 본문 섹션에는 내 API에서 JSON
이 아니라 HAL 브라우저가 HTML
개 있습니다. 꽤 바닐라 (완전한 소스 아래 목록), 그래서 올바른 방향으로 어떤 포인터를 감사하겠습니다 -
난 내 설정에서 뭔가 잘못 한 경우 확실하지 않다!
완성도를 들어- 나는 탐색기 텍스트 필드에 /users
를 입력하고 이동을 선택하면!, 나는 예상대로 내 API의 세부 사항을 참조 할. 또한 HAL 브라우저 종속성을 제거하고 http://localhost:8080
으로 이동하면 예상대로 내 API의 루트가 표시됩니다.
의 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sample</groupId>
<artifactId>restsample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>My application</name>
<description>My application description</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-hal-browser</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
User.java
@Data
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
@NotBlank
@Size(min = 1, max = 100)
@Column(unique = true)
private String username;
}
UserRepository.java 간단한 솔루션은 REPO에서 예를 들어, 복도 브라우저 파일을 복사하는 것입니다
@RepositoryRestResource
public interface UserRepository extends CrudRepository<User, Long> {
User save(User user);
}
HTML을 요청하면 HTML이 표시됩니다. – zeroflagL
답장을 보내 주셔서 감사합니다. 그러나 HAL 브라우저의 "Custom Request Headers"섹션에 application/json + hal 콘텐츠 유형 헤더를 추가하더라도 여전히 응답으로 HAL 브라우저가 반환됩니다. 또한 문서에 이것이 필요하다는 표시는 전혀 없습니다 (그리고 실행중인 HAL 브라우저에서 본 예는 내용 유형 헤더도 전달하지 않아도됩니다). – user2455157
실수로 올바른 데이터를 반환하는 "Accept : application/hal + json"을 사용해야했습니다. 따라서 스프링 부트 패키지가 API와 동일한 끝점에서 HAL 브라우저로 리디렉션하는 방식이므로 문제가 예상대로 작동하지 않습니다. – user2455157