我記得在 Django 中進行過一個專案,您可以在其中創建可以給定前綴的路由,然后為端點的其余部分包含另一個 URL 檔案。
api_patterns= [
url('foo/', include(foo.urls)),
url('bar/', include(bar.urls)),
]
urlpatterns = [
url(r'api/', include(api_patterns)),
]
此實作將產生端點/api/foo/,/api/bar/并且這些端點將存在于具有單獨 url 檔案的單獨目錄中。
問題是我們是否可以實作與Spring Boot等效的東西。
我知道您可以@RequestMapping在所有檔案上添加前綴。但是在我當前的專案中,我們有很多控制器從相同的路由前綴開始,然后,然后彼此不同。
// Foo controller
@Controller
@RequestMapping(path = "api/foo")
public class FooController {
@GetMapping(path = "")
// Endpoint to /api/foo
}
// Bar controller
@Controller
@RequestMapping(path = "api/bar")
public class BarController {
@GetMapping(path = "")
// Endpoint to /api/bar
}
// Tar controller by foo
@Controller
@RequestMapping(path = "api/foo/tar")
public class TarController {
@GetMapping(path = "")
// Endpoint to /api/foo/tar
}
然后端點看起來像這樣/api/foo,/api/bar和/api/foo/tar。
如何防止所有檔案上的重復路徑前綴?
這種路由對于使用 API 端點可能是一種不好的做法,我也認為這可以避免,這就是為什么我要求作為初級開發人員在我的第一份作業中嘗試改進并表現出責任感。
uj5u.com熱心網友回復:
我認為最好的做法是
/**
* Class for String constants to use in the application
*/
public final class WebConstants {
public static final String API = "api";
...other constants
}
@Controller
@RequestMapping(path = WebConstants.API "/foo")
public class FooController {
@GetMapping
// serve something for /api/foo
@GetMapping(path = "/tar")
// serve something for /api/foo/tar
}
// Bar controller
@Controller
@RequestMapping(path = WebConstants.API "/bar")
public class BarController {
@GetMapping
// Serve something for /api/bar
}
uj5u.com熱心網友回復:
您可能需要粉碎具有相同端點開頭的控制器。我建議您保留此注釋@RequestMapping(path = "/api/foo"),并在該類中插入帶有@GetMapping(path = "/tar"). 其他方法可能有前綴 tar: "/tar/example"。
但是如果有很多方法以這個前綴開頭/api/foo/tar并且類FooController開始足夠大,那么將它們分開保存會很好。
uj5u.com熱心網友回復:
您可以擁有如下界面:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(path = "/api")
public interface BaseController {
}
然后每個單獨的控制器類都可以實作如下介面:
public class FooController implements BaseController {
@GetMapping(path = "/foo")
// Endpoint to /api/foo
}
前提是可以更改每個控制器類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523395.html
標籤:爪哇弹簧靴弹簧MVC
