Статьи

X-Mas Musings — слишком много путей.

Декабрь для многих — это период размышлений или мыслей. Поэтому я решил подумать о прошлогодних вещах и мыслях — каждый день до Рождества. Это день 15.

В типичном (Java) проекте есть много мест, где нужно указать какой-то «путь».

Gradle

Для начала, в любой конфигурации сборки нужно описать несколько путей к каталогам или файлам.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sonarqube {
  properties {
    property 'sonar.sources', 'src'
    property 'sonar.exclusions', '**/*.spec.js'
    property 'sonar.tests', 'src'
    property 'sonar.test.inclusions', '**/*.spec.js'
  }
}
 
task test(type: YarnTask, dependsOn: 'yarn') {
  description = 'Run the client tests'
 
  inputs.files(fileTree('config'))
  inputs.files(fileTree('src'))
  inputs.file('package.json')
  outputs.dir('build')
  args = ['run', 'unit']
}
 
war {
  dependsOn asciidoctor
  from ("${asciidoctor.outputDir}/html5") {
    into 'static/docs'
  }
}

UrlMappings Grails

Сопоставление URL-адресов с соответствующим контроллером и действия на стороне сервера.

1
2
3
4
5
"/"(controller: "dashboard")
"500"(view: "/error")
"/api/v1/person/$id"(
  controller: "person",
  action: "details")

Spring Security

Защита URL с разрешениями.

1
2
3
4
5
http
  .authorizeRequests()
  .antMatchers("/assets/**").permitAll()
  .antMatchers("/admin").hasRole("ADMIN")
  .anyRequest().authenticated()

Vue маршрутизация

Отображения путей. Тот же проект, но для клиента JavaScript.

1
2
3
4
5
routes: [
  { path: '/', redirect: '/dashboard' },
  { path: '/staff/person/:id?', component: Person },
  { path: '*', redirect: '/notfound' }
]

Spring REST Docs

Описание пути полей JSON для создания документации по запросам и ответам API.

1
2
3
4
5
6
7
8
9
given(this.spec)
  .accept("application/json")
  .filter(document("user", responseFields(
    fieldWithPath("name").description("The user's name"),
    fieldWithPath("email.primary").description("The primary email address"),
    fieldWithPath("roles[]").description("List of roles"),
    fieldWithPath("subscription[].type.*.name").description("Any subscription type"))))
   .when().get("/user/5")
   .then().assertThat().statusCode(is(200));

И более…

Это только в одном проекте!

Иногда я даже забываю, что такое правильный синтаксис & # 55357; & # 56898; В некоторых документах четко указано, что они используют шаблоны пути в стиле Ant ( **/*.? ) Или просто используют собственную систему ( [].* ).

Я думаю, что пришло время для стандартизированной «Спецификации пути» — где все пути могут быть описаны единообразно и рассматриваются одинаково! & # 55357; & # 56898;

Есть ли в вашем собственном проекте другие удивительные примеры? Я хотел бы услышать о них в разделе комментариев.

Опубликовано на Java Code Geeks с разрешения Теда Винке, партнера нашей программы JCG . Смотрите оригинальную статью здесь: X-Mas Musings # 15 — Too Many Paths. Один путь Спец?

Мнения, высказанные участниками Java Code Geeks, являются их собственными.