spring 具有前端和 restful 的引导应用程序
spring boot application with both front end and restful
我正计划使用 Spring 作为 restful 服务启动来构建 Web 应用程序。
我的 spring boot web restful 应用程序也应该可以被其他应用程序访问。如果有人从其他应用程序访问其余服务,那么我的应用程序应该按预期工作。
@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";
}
}
在上面的示例中,如果调用是从应用程序外部进行的,则其余服务应该 return JSON 输出。
一种方法是我们可以将一些变量区分为请求变量。但我不想那样。请分享一些标准方法。
感谢您的帮助。
惯用的方式是依赖Accept
请求header。
如果请求者提供 Accept: application/json
那么 return 他 JSON 数据(REST API)。
如果请求者向您提供 Accept: application/xhtml+xml
return 他 HTML (网络前端)。
Implementation-wise 你应该完成使用 @RequestMapping
和 consumes
参数。你需要两种方法。如果两条路径的业务逻辑相同,则可以重用 in。业务逻辑应该驻留在另一个方法或单独的 @Service
中。业务逻辑本身不应知道、关心或依赖传输协议 (HTTP)、请求响应或表示的序列化。业务逻辑应该只与 POJO 一起工作,并将序列化留给@Controller。
@Controller
@RequestMapping("/greeting")
public class GreetingController {
@RequestMapping(consumes="application/json")
@ResponseBody //required if you want to return POJO (spring will serialize it to response body)
public void rest() {
//return POJO, it will be serialized to JSON. or serialize pojo
directly and return response with manually set body and headers.
}
@RequestMapping(consumes="application/xhtml+xml")
public void html() {
//populate model, return string pointing to HTML to View
}
}
我建议创建两个控制器 类,第二个使用 @RestController。那么,有两条路;第二个可能是 "rs/greeting"。这种将 Web 和 RESTful 问题分开的方法更易于扩展,并且不需要任何大多数客户不想处理的奇怪 headers。
我正计划使用 Spring 作为 restful 服务启动来构建 Web 应用程序。 我的 spring boot web restful 应用程序也应该可以被其他应用程序访问。如果有人从其他应用程序访问其余服务,那么我的应用程序应该按预期工作。
@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";
}
}
在上面的示例中,如果调用是从应用程序外部进行的,则其余服务应该 return JSON 输出。
一种方法是我们可以将一些变量区分为请求变量。但我不想那样。请分享一些标准方法。
感谢您的帮助。
惯用的方式是依赖Accept
请求header。
如果请求者提供 Accept: application/json
那么 return 他 JSON 数据(REST API)。
如果请求者向您提供 Accept: application/xhtml+xml
return 他 HTML (网络前端)。
Implementation-wise 你应该完成使用 @RequestMapping
和 consumes
参数。你需要两种方法。如果两条路径的业务逻辑相同,则可以重用 in。业务逻辑应该驻留在另一个方法或单独的 @Service
中。业务逻辑本身不应知道、关心或依赖传输协议 (HTTP)、请求响应或表示的序列化。业务逻辑应该只与 POJO 一起工作,并将序列化留给@Controller。
@Controller
@RequestMapping("/greeting")
public class GreetingController {
@RequestMapping(consumes="application/json")
@ResponseBody //required if you want to return POJO (spring will serialize it to response body)
public void rest() {
//return POJO, it will be serialized to JSON. or serialize pojo
directly and return response with manually set body and headers.
}
@RequestMapping(consumes="application/xhtml+xml")
public void html() {
//populate model, return string pointing to HTML to View
}
}
我建议创建两个控制器 类,第二个使用 @RestController。那么,有两条路;第二个可能是 "rs/greeting"。这种将 Web 和 RESTful 问题分开的方法更易于扩展,并且不需要任何大多数客户不想处理的奇怪 headers。