簡體   English   中英

SparkJava - 區分大小寫的端點

[英]SparkJava - Case sensitive endpoints

我有一個 java 代碼,它使用 SparkJava ( http://sparkjava.com/ )為 http 端點提供服務。

端點是這樣生成的:

 get("/xxx/yyy", (request, response) -> {
        ...
        return SOMETHING_TO_RETURN
 });

使用這種方法我有一個問題:
假設我定義了一個端點:'/api/status/car',
但用戶有時會調用 '/api/status/ CAR '。 所以問題在於這樣定義的 url 區分大小寫。

現在我必須以某種方式修復它:使大小寫不敏感。 我看過過濾器(例如“之前”),但我相信我無法修改請求 url(toLowerCase)。

所以主要問題是:通過使用這種方法定義端點,我如何將請求 url 修改為小寫,或者說 sparkjava 應該使用不區分大小寫的模式映射 url。

URL(域名部分除外)可能始終區分大小寫。 由服務器決定,因此用戶永遠無法知道。 您可以在W3.org中了解更多信息。

解決您的問題的一種方法可能是使用請求參數

get("/api/status/:carParam", (request, response) -> {
  if (request.params(":carParam").equalsIgnoreCase("car")) {
    return SOMETHING_TO_RETURN;
  }
});

如果您在/api/status/除了car下還有更多路線,那么您應該將:carParam重命名為更通用的名稱,例如:param ,然后在處理程序主體中,您將檢查此查詢參數並相應地返回正確的返回值。 例如:

get("/api/status/:param", (request, response) -> {
  if (request.params(":param").equalsIgnoreCase("car")) {
    return SOMETHING_TO_RETURN_CAR;
  } else if (request.params(":param").equalsIgnoreCase("passenger")) {
    return SOMETHING_TO_RETURN_PASSENGER;
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM