欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Springboot 2.x中server.servlet.context-path的运用详解

程序员文章站 2022-06-24 09:43:38
今天在开发项目的时候遇到了请求不通api的问题,最开始以为是server.servlet.context-path配置导致的问题,最终发现是由于aws端口未开放/监听导致的connection ref...

今天在开发项目的时候遇到了请求不通api的问题,最开始以为是server.servlet.context-path配置导致的问题,最终发现是由于aws端口未开放/监听导致的connection refuse。虽然如此,仍然想记录一下server.servlet.context-path的作用。

功能

这个配置能够设置项目中的所有api的上下文路径(url的一部分),与@requestmapping有异曲同工之妙。

我们知道,@requestmapping能够在api方法层级声明,同时能够在controller的类层级声明,为什么能够在多层级声明呢?大家很容易想到,为了使api url的语义性,遵从rest标准的api是非常棒的,同一个controller下的url前缀相同能够非常明确的表达语义与关联关系。

那么,如果我们有多个项目/微服务呢?也应该做到这一点,只不过是以更大的层级方式在应用。server.servlet.context-path能够以一个project为单位配置默认的url上下文路径,保持设计的一致性是非常合适的做法。

用法

如果我们没有添加任何配置,则为默认值“/”,
我们可以在springboot的properties下配置:

server.servlet.context-path=/api/demo

如果使用的是yml配置方式,则为:

server:
 servlet:
 context-path:/api/demo

那么我们调用一个地址本来为 [ip地址]:[端口号]/books 的api,现在变成了 [ip地址]:[端口号]/api/demo/books

注意!!! 配置上有一个小坑,如果你使用的是springboot 1.x版本,我们需要改为使用 server.context-path 来配置路径。

优点

  • 我们能够通过此配置在更大的层级上做统一的路径配置,体现了restful的语义化api url的优势。
  • 便于配置ngnix的请求分发

springboot2.x配置server.context-path不生效的解决

之前看视频教程的时候发现教程上的配置是这样的

 server.context-path=/imooc

然后我按照这样配置发现重启了并未生效

tomcat started on port(s): 8081 (http) with context path ''

后来百度发现原来1.x版本这样配置是可以的,但是2.x版本需要如下配置才能生效

server.servlet.context-path=/daojihe
tomcat started on port(s): 8081 (http) with context path '/daojihe'

到此这篇关于springboot 2.x中server.servlet.context-path的运用详解的文章就介绍到这了,更多相关springboot 2.x server.servlet.context-path内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!