2016-10-27 5 views
2

Я использую Spring Boot для создания REST API для сайта, который я создаю. В настоящее время для доступа к статическому контенту я просто перехожу к имени ресурсов. Например, /index.html или /dashboard.html. Поскольку я использую контроллеры REST, невозможно сопоставить страницы с определенными окончаниями URL, и нет файла web.xml, так как я использую Spring Boot. (Например, я хочу, чтобы отобразить /dashboard файл dashboard.html.)Сопоставление ресурсов html с помощью Spring Boot

Должен ли я использовать стандартный MVC @Controller контроллеры для управления моей страницы отображения или есть лучший способ сделать это?

EDIT

Я в настоящее время доступ статического контента, просто введя имя файла в URL. (например, /index.html откроет индекс.)

Что я хочу знать, это как переназначить статический контент. Например, если я хочу, чтобы /dashboard отображал dashboard.html, или я хочу, чтобы /error отображал /error.html и т. Д. Это упростит для пользователя просто перейти на www.mydomain.com/dashboard вместо того, чтобы добавить окончание .html.

Есть ли способ переназначить страницы, подобные этому с помощью Spring Boot?

EDIT 2

Я хочу, чтобы бремя формирования мнения каждой страницы помещенной на систему клиента. Другими словами, я НЕ хочу, чтобы сервер создавал каждую страницу. Я хочу иметь «шаблоны» по существу, которые затем превращаются в полезные страницы с информацией. VIA API REST, используемый контроллерами AngularJS.

ответ

0

Если вы хотите использовать Угловое, не реализуют Thymeleaf (Thymeleaf не RESTful) , Тогда вы можете использовать $ routeProvider, чтобы указать, какой статический ресурс служит для URI. Если у вас есть index.html в вашем статическом каталоге, Spring Boot автоматически будет использовать это как страницу по умолчанию, а затем ваш другой статический URI, используемый в Angular, будет относиться к индексной странице.

https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

+0

Так что я должен просто использовать Angular, чтобы удалить теги .html в конце? Нет ли элегантного способа сделать это RESTfully с весной? Если нет, тогда я поеду по этому маршруту. Спасибо –

+0

Реально, есть много способов сделать это. Spring просто предоставляет услугу RESTful, и то, как она получена, зависит от вас. Что вы понимаете, удалив теги .html? –

+0

Как и в случае, если я нахожусь в панели управления в моем браузере, он не найден. Мне нужно ввести /dashboard.html, что довольно уродливо. Мне интересно, есть ли способ избавиться от этого на стороне сервера при сохранении принципов REST. –

1

Вы можете использовать Thymeleaf рамки для обслуживания HTML веб-контента:

Во-первых, добавьте зависимость:

build.gradle

dependencies { 
    compile("org.springframework.boot:spring-boot-starter-thymeleaf") 
} 

Затем создайте контроллер:

GreetingController.java

@Controller 
public class GreetingController { 

    @RequestMapping("/greeting") 
    public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { 
     model.addAttribute("name", name); 
     return "greeting"; 
    } 

} 

Затем создайте шаблон:

Имя файла name.html должен точно соответствовать строки, возвращаемой в контроллер в этом случае "greeting"

SRC/главная/ресурсы/шаблоны/приветствия.HTML

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Serving HTML Web Content</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <p>HEY THERE!</p> 
</body> 
</html> 

Вы можете получить доступ к странице локально, перейдя:

http://localhost:8080/greeting

+0

По существу, я создаю шаблон HTML, шаблон предоставляется пользователю при вызове отображаемого URL-адреса, затем шаблон обслуживается, а контроллеры AngularJS затем заполняют контент, используя REST API? Итак, другими словами, сервер не генерирует «представления» с тимелеафом? Я хочу удалить эту нагрузку с сервера, и если JavaScript-контроллеры используют API REST для заполнения шаблонов. –

+0

Thymeleaf - это скорее шаблонный движок, а не динамически создаваемые веб-страницы, такие как JSP. У вас есть доступ к языку Spring Expression, если вы выберете, но вы можете просто использовать barebones HTML5, если это соответствует вашему прецеденту. Однако есть некоторая обработка на стороне сервера, если вы предпочитаете использовать атрибуты тимелеафа для генерации или заполнения элементов. – anataliocs

+0

Вы пытаетесь достичь одностраничной архитектуры? B/c в этом случае тимелеаф не будет абсолютно идеальной подгонкой. Если это так, вы можете проверить https://jhipster.github.io/. JHipster создает одностраничное приложение, использующее angularJS/Twitter Bootstrap и бэкэнд REST API для загрузки Spring Boot. – anataliocs

0
  1. Я бы на самом деле переместить все статические файлы - index.html, angular.js или bootstrap.js и все ваши угловую template.html к переднему узлу конец прокси и прокси все ваши службы загрузки весны звонят через это (Это поможет мне избежать установки весеннего ботинка для CORS).
  2. Или, по крайней мере, я бы использовал nginx/httpd для обслуживания всех статических файлов и прокси-сервера всех вызовов службы весеннему загрузочному приложению.
Смежные вопросы