当前位置: 首页 > 知识库问答 >
问题:

如何仅为rest控制器更改基url?

方恺
2023-03-14

我使用的是spring boot V1.3.2

我尝试创建自定义注释,它通过添加RequestMapping来扩展RestController。这里有一个例子,但它不起作用。

@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
@RestController 
@RequestMapping(value = "/rest", path = "/rest") 
public @interface MyRestController { }

共有1个答案

方博学
2023-03-14

创建一个声明基本URL的自定义注释,并使用它来代替@RestController。

CustomRestControllerAnnotation.java

package com.example.stackoverflow.config;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@RestController
@RequestMapping("/rest")
public @interface CustomRestControllerAnnotation {}

firstRestController.java

package com.example.stackoverflow.controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.example.stackoverflow.config.CustomRestControllerAnnotation;

@CustomRestControllerAnnotation
public class FirstRestController {

    @RequestMapping("/first")
    public String firstMethod(){
        return "First Controller";
    }
}

secondrestController.java

package com.example.stackoverflow.controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.example.stackoverflow.config.CustomRestControllerAnnotation;

@CustomRestControllerAnnotation
public class SecondRestController {

    @RequestMapping("/second")
    public String secondMethod(){
        return "Second Controller";
    }
}

通过创建一个用作所有实际控制器模板的基控制器,您可以从一个位置有效地管理根URL。

BaseRestController.java

package com.example.stackoverflow.controller;

import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/rest")
public class BaseRestController {}
package com.example.stackoverflow.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FirstRestController extends BaseRestController{

    @RequestMapping("/first")
    public String firstMethod(){
        return "First Controller";
    }
}
package com.example.stackoverflow.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SecondRestController extends BaseRestController{

    @RequestMapping("/second")
    public String secondMethod(){
        return "Second Controller";
    }
}
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

通过声明这种依赖关系,您的所有存储库都会自动启用REST。

可以使用属性文件控制基URL。

应用程序.属性

spring.data.rest.basePath=/rest
 类似资料:
  • 我尝试使用过滤器和拦截器来修改从控制器方法提交的响应,但我无法这样做,因为在执行过滤器或拦截器之前提交了响应。我知道我们还有另一种选择,但这不是我正确的地方,因为目的是根据HTTP状态修改响应。如果有人有想法,请告诉我,我如何通过Spring启动和Rest来实现

  • 本文向大家介绍Ruby on Rails 基本REST控制器,包括了Ruby on Rails 基本REST控制器的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 本文向大家介绍如何更改控制台的WindowLeft,包括了如何更改控制台的WindowLeft的使用技巧和注意事项,需要的朋友参考一下 使用Console.WindowLeft属性更改C#中控制台的WindowLeft。 示例 现在让我们看一个例子- 输出结果 这将产生以下输出-

  • 我在我的项目中使用controlsfx,并且我试图找到适当的方法来更改默认的验证器装饰,因此它使用CSS装饰作为默认的图形,但我没有访问权限。 我可以制作自己的decorator,并装饰一些文本字段,(我定义css类,创建decorator,它就可以工作了) 但是我怎么能改变我的代码,它默认使用CSS装饰进行验证!示例代码: 所以,要更改什么,以便我的验证使用CSS样式,而不是图形样式。 上述代码

  • easySwoole支持REST风格开发。在实现上,其实是对AbstractController进行了REST规则封装,本质上,也是一个控制器。 支持GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS。 实例代码 namespace AppControllerRest; use CoreAbstractInterfaceAbstractREST; use CoreHttp

  • 控制器 控制器名称空间前缀统一为 “{$APPLICATION_DIR}Controller,即系统默认应用目录为App,那幺所有的控制器均应在/App/Controller目录下。 所有的控制器都应继承CoreAbstraceInterfaceAbstractController。 关于AbstractController中的抽象方法 easyswoole中,任何控制器都需继承AbstractC