Части URL канонической терминологии - PullRequest
0 голосов
/ 16 февраля 2019

Я читал вокруг, и, кажется, нет очень хорошо понятной и полностью принятой терминологии для частей URL.Это правда?Я хотел бы знать, какие стандарты существуют для терминологии частей URL.Что является наиболее распространенным?Есть ли какой-либо хорошо установленный стандарт?

Я нашел следующее:

1. RFC3986, раздел 3

     foo://example.com:8042/over/there?name=ferret#nose
     \_/   \______________/\_________/ \_________/ \__/
      |           |            |            |        |
   scheme     authority       path        query   fragment
      |   _____________________|__
     / \ /                        \
     urn:example:animal:ferret:nose

2.window.location из Javascript в браузерах

protocol://username:password@hostname:port/pathname?search#hash
-----------------------------href------------------------------
                             -----host----
-----------      origin      -------------
  • protocol - схема протокола URL, включая окончательный ':'
  • hostname- доменное имя
  • port - номер порта
  • pathname - / pathname
  • search -? параметры
  • hash - #фрагмент_идентификатора
  • username - имя пользователя, указанное перед именем домена
  • password - пароль, указанный перед именем домена
  • href - весь URL
  • origin - протокол: // имя хоста: порт
  • host - имя хоста: порт

3.NodeJS, модуль url

Над строкой с URL-адресом вы видите старый интерфейс API url модуля, а под строкой вы видите новый API.Кажется, что узел перешел от стандартной терминологии RFC к более удобной для браузера стандартной терминологии, то есть аналогично браузеру windows.location.

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                              href                                              │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │  │        auth         │          host          │           path            │ hash  │
│          │  │                     ├─────────────────┬──────┼──────────┬────────────────┤       │
│          │  │                     │    hostname     │ port │ pathname │     search     │       │
│          │  │                     │                 │      │          ├─┬──────────────┤       │
│          │  │                     │                 │      │          │ │    query     │       │
"  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          │  │          │          │    hostname     │ port │          │                │       │
│          │  │          │          ├─────────────────┴──────┤          │                │       │
│ protocol │  │ username │ password │          host          │          │                │       │
├──────────┴──┼──────────┴──────────┼────────────────────────┤          │                │       │
│   origin    │                     │         origin         │ pathname │     search     │ hash  │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│                                              href                                              │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

4.Высший рейтинг статья от Мэтта Каттса

URL: http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#00h02m30s

  • Протокол http.Другие протоколы включают https, ftp и т. Д.
  • Хост или имя хоста - video.google.co.uk.
  • Субдомен - video.
  • Доменное имя google.co.uk.
  • Домен верхнего уровня или домен верхнего уровня - это Великобритания.Домен uk также называется доменом верхнего уровня с кодом страны или ccTLD.Для google.com TLD будет com.
  • Домен второго уровня (SLD) - co.uk.
  • Порт 80, который является портом по умолчанию для веб-серверов.Возможны другие порты;веб-сервер может прослушивать порт 8000, например.Когда порт равен 80, большинство людей пропускают порт.
  • Путь - / videoplay.Путь обычно относится к файлу или расположению на веб-сервере, например /directory/file.html
  • Этот URL имеет параметры.Имя одного параметра - docid, а значение этого параметра - 7246927612831078230. URL-адреса могут иметь множество параметров.Параметры начинаются со знака вопроса (?) И разделяются амперсандом (&).

Некоторые из моих проблем:

  1. Является ли window.location стандартом или основано на стандарте?

  2. Должен ли я назвать http:// protocol или scheme?

  3. Должен ли я сказать host или authority?

  4. Почему ни window.location, ни узел не имеют свойств для TLD или других частей домена, если они доступны?

  5. Терминологическая разница между hostname (example.com) и host (example.com:8080) хорошо известна?

  6. для узла origin не включает username:password@, в то время как для windows.location это

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

Ответы [ 3 ]

0 голосов
/ 16 февраля 2019

Java java.net.URL следует RFC 2396 , который является более старой версией RFC 3986.

Python's urlparse также следует RFC3986, за исключением использования netloc вместо authority, возможно, по устаревшим причинам.

Другими словами, я бы следовал RFC 3986.

0 голосов
/ 17 февраля 2019

Стандарт URI STD 66 .В настоящее время это сопоставлено с RFC 3986 .

Так что для универсального синтаксиса URI эти термины являются официальными, в настоящее время:

  • scheme
  • authority
    • userinfo
    • host
    • port
  • path
  • query
  • fragment
0 голосов
/ 16 февраля 2019

Терминология зависит от того, какой архитектурный стиль / технологию вы используете.

Я предпочитаю стиль REST для идентификации различных частей моего URL Стандарт REST URI

Но я повторюсь, что нет единого универсального стандарта для представления URL

...