Я работаю на REST-сервере в Kotlin, используя kottpd
Вот выдержка из определенных мной ресурсов / URI:
get("/patients") {req, res -> PatientHandler.doGetAll(req, res)}
post("/patients") {req, res -> PatientHandler.doPost(req, res)}
get("/patients/.*") {req, res -> PatientHandler.doGetOne(req, res)}
post("/patients/.*") {req, res -> PatientHandler.doPatch(req, res)}
get("/patients/.*/cases") {req, res -> CaseHandler.doGetAll(req, res)}
post("/patients/.*/cases") {req, res -> CaseHandler.doPost(req, res)}
/patients
и /patients/.*
до сих пор работали нормально: например, POST: /patients
добавляет пациента в список, а GET: /patients/1
возвращает пациента с идентификатором 1.
Однако при вызове POST: /patients/1/cases
для добавления случая к пациенту 1 выполняются функции, прикрепленные к POST: /patients/.*
.
Я предполагаю (!), Что .*
- это подстановочный знак, и поэтому нет различия между идентификатором, каким-то другим путем или каким-либо другим.
Как я могу определить свои ресурсы / URI различать guish между этими случаями? Или, если мои предположения не верны: что я делаю не так?