【问题标题】:RESTful web services. Accessing resourcesRESTful Web 服务。访问资源
【发布时间】:2023-04-01 15:27:01
【问题描述】:

我有一个基本的 SpringBoot 2.1.3.RELEASE 应用程序。使用 Spring Initializer、JPA、嵌入式 Tomcat、Thymeleaf 模板引擎,并打包为可执行的 JAR 文件。

我有这个 restController

@RestController
@RequestMapping("/api/v1/users")
public class UserResourceController extends ResourceController {

    private static final Logger LOG = LoggerFactory.getLogger(UserResourceController.class);

        @GetMapping(path = "/", consumes = "application/json", produces = "application/json")
    @ResponseStatus(HttpStatus.OK)
    public ResponseEntity<User> getUser(@RequestHeader(value = "Authorization") String authHeader) {

        User user = authUserOnPath("/users", authHeader);

        user.getApplicationSetup()
                .setExchangeRateWithUSD(currencyService.getUSDRate(user.getApplicationSetup().getAppCcy()));

        return ResponseEntity.ok().body(user);
    }
}

还有这个:

@RestController
@RequestMapping("/api/v1/users/wallets")
public class WalletResourceController extends ResourceController {

    @Autowired
    private WalletService walletService;



    /**
     * Get user's wallets
     * 
     * @param request
     * @param id
     * @return
     */
    @GetMapping(path = "/", consumes = "application/json", produces = "application/json")
    public ResponseEntity<List<Wallet>> getUserWallets(@RequestHeader(value = "Authorization") String authHeader) {

        User user = authUserOnPath("/users/wallets", authHeader);

        List<Wallet> wallets = userService.getWallets(user);



        return ResponseEntity.ok().cacheControl(CacheControl.maxAge(5, TimeUnit.MINUTES)).body(wallets);
    }

访问时一切正常:

GET http://127.0.0.1:1133/myApp/api/v1/users

但我在访问时收到 404:

GET http://127.0.0.1:1133/myApp/api/v1/users/wallets

【问题讨论】:

  • 它们在不同的包中吗?如果是这样,两个包是否都设置为由 Spring 扫描以获取请求映射?
  • 它们在同一个包中
  • 尝试将它们组合成一个类,将“wallets”端点移动到另一个 RestController 中,并将其 Get Mapping 更改为“/wallet”。

标签: java rest spring-boot


【解决方案1】:

对于

@RequestMapping("/api/v1/users/wallets")

您指定了GET 端点

 @GetMapping(path = "/" ...)

所以可访问的 URL 位于(见终止 /

GET http://127.0.0.1:1133/myApp/api/v1/users/wallets/

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    相关资源
    最近更新 更多