Мне было интересно, как люди с большим опытом и более сложными проектами уживаются с этим "безобразием" в REST Communication.Представьте себе следующую проблему:
Нам понадобится достаточное количество функций для одного конкретного ресурса в нашей инфраструктуре REST, в моем случае это более 50 функций, которые приводят к разным запросам и разным ответам.Я попытался придумать значимое дерево ресурсов и назначил их методам, которые будут выполнять «вещи».Впоследствии класс ресурсов сервера выглядит следующим образом:
@Path("/thisResource")
public class SomeResource {
@GET/POST/PUT/DELETE
@Path("meaningfulPath")
public Response resourceFunction1 ( ...lots of Params) {
... logic ....
}
//
// lots of functions ...
//
@GET/POST/PUT/DELETE
@Path("meaningfulPath")
public Response resourceFunctionN ( ...lots of Params) {
... logic ....
}
}
Чтобы создать URL, которые будет вызывать мой клиент, я сделал небольшую функцию для предотвращения опечаток и более эффективного использования констант
, поэтомумой клиент выглядит так:
public class Client() {
public returnType function1 () {
client.resource = ResourceClass.build(Constants.Resouce, "meaningfulPath");
...
return response.getEntity(returnType);
}
}
Теперь меня беспокоит вопрос, как мне лучше связать функцию клиента и функцию сервера?
Единственное соединение между этими двумя блоками кодаэто URL, который будет вызываться клиентом и отображаться сервером, и даже если этот URL генерируется где-то еще, это приводит к большой путанице.
Когда один из моих коллег должен войти в этокод, ему трудно понять, какая из 50+ клиентских функций приводит к какой функции сервера.Также трудно определить, есть ли в коде устаревшие функции и т. Д. Я думаю, что большинство из вас знает о проблемах нечистого кода лучше, чем я.
Как вы справляетесь с этим?Как бы вы сохранили этот код в чистоте, поддержке и великолепии?