Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Diese Seite zeigt Beispiele für typische Aktivitäten bei der Verwaltung von URNs über die REST-API.

Inhalt
stylesquare

Information zu Namensraum anzeigen

Über den Endpunkt /namespaces/name/<namensraum-name> können Informationen über einen Namensraum sowie URLs zu weiterführenden Ressourcen zu dem Namensraum abgefragt werden:

Codeblock
GET /sandbox/v2/namespaces/name/urn:nbn:de:example
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Accept: application/json
Codeblock
titleAntwort auf GET /namespaces/name/urn:nbn:de:example
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 656
Date: Wed, 13 Feb 2019 14:10:41 GMT

{
  "name": "urn:nbn:de:example",
  "creationDate": "2019-02-13T15:08:55+0100",
  "lastModified": "2019-02-13T15:08:55+0100",
  "allowsRegistration": true,
  "organisation": "http://localhost:8080/sandbox/v2/organisations/id/1",
  "urnNamingPolicy": "http://localhost:8080/sandbox/v2/policies/urn-naming/id/no-check",
  "urlPolicy": "http://localhost:8080/sandbox/v2/policies/url/id/no-check",
  "comment": null,
  "resolverUrl": "",
  "urns": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example/urns",
  "urnSuggestion": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example/urn-suggestion",
  "@id": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example"
}

Abfragen eines Vorschlags für eine URN

Der URN-Service kann Vorschläge für neue URNs in einem Namensraum machen. Er garantiert, dass die URN zum Zeitpunkt der Anfrage noch nicht registriert ist und dass derselbe Vorschlag nicht zweimal gemacht wird. Die Funktion generiert nur einen Vorschlag es findet keine Registrierung oder Speicherung der URN statt. Nur der Besitzer des Namensraums kann sich Vorschläge für URNs in seinem Namensraum generieren lassen.

Ein URN-Vorschlag wird mit einem GET-Request auf die Ressource /namespaces/name/<namensraum-name>/urn-suggestion abgefragt:

Codeblock
GET /sandbox/v2/namespaces/name/urn:nbn:de:example/urn-suggestion
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Accept: application/json
Codeblock
titleAntwort auf GET /namespaces/name/urn:nbn:de:example/urn-suggestion
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Content-Length: 233
Date: Wed, 13 Feb 2019 14:15:52 GMT

{
  "suggestedUrn": "urn:nbn:de:example-2019021315155244513532",
  "namespace": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example",
  "@id": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example/urn-suggestion"
}

Das Feld suggestedUrn enthält einen Vorschlag für eine URN, die in dem Namensraum, auf den das Feld namespace verweist, registriert werden kann. Wie das geht ist im nächsten Schritt beschrieben.

Registrieren einer neuen URN

URNs werden per POST-Request auf die Ressource /urns angelegt. Bei der Registrierung der URN muss mindestens eine URL angegeben werden. Außerdem müssen die Bedingungen des URN-Naming-Policy und der URL-Policy für den Namensraum erfüllt sein.

Die Angabe der priority ist optional. Sie bestimmt bei mehreren URLs in welcher Reihenfolge sie beim Resolving berücksichtigt werden. URLs mit höherer Priorität (d.h einer größeren Zahl) werden vorrangig verwendet (Hinweis: Dies ist im aktuellen NBN-Resolver auf https://nbn-resolving.org/ noch nicht vollständig umgesetzt).

Codeblock
POST /sandbox/v2/urns
Authorization: Basic dXJuLXBhcnRuZXI6bWVpbi1wYXNzd29ydA==
Content-Type: application/json
Accept: application/json

{
  "urn": "urn:nbn:de:example-2019021315155244513532",
  "urls": [
    {
      "url": "http://example.org/document-url",
      "priority": 10
    }
  ]
}
Codeblock
titlePOST /sandbox/v2/urns
collapsetrue

 

Registrieren einer neuen URN

 

HTTP/1.1 201 Created
Connection: keep-alive
Location: http://localhost:8080/sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
Content-Type: application/json
Content-Length: 527
Date: Wed, 13 Feb 2019 14:32:48 GMT

{
  "urn": "urn:nbn:de:example-2019021315155244513532",
  "creationDate": "2019-02-13T15:32:48+0100",
  "lastModified": "2019-02-13T15:32:48+0100",
  "namespace": "http://localhost:8080/sandbox/v2/namespaces/name/urn:nbn:de:example",
  "successor": null,
  "urls": "http://localhost:8080/sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/urls",
  "myUrls": "http://localhost:8080/sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532/my-urls",
  "@id": "http://localhost:8080/sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532"
} 

Als Antwort auf das Anlegen einer neuen URN wird der Status 201 Created zurückgegeben und die Beschreibung der neuen URN zurückgegeben.

Mithilfe der URLs in den Feldern @idurlsmyUrls können wir jetzt leicht weitere Abfragen auf der URN vornehmen.

Existenzprüfung für eine URN

Um zu Überprüfen, ob eine URN registriert wurde, können wir einfach einen HEAD-Request auf den Endpunkt /urns/urn/<urn> machen. Wenn die URN existiert, wird der Status 200 OK zurückgegeben:

Codeblock
HEAD /sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
Codeblock
titleAntwort auf HEAD /sandbox/v2/urns/urn/urn:nbn:de:example-2019021315155244513532
collapsetrue
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 0
Date: Wed, 13 Feb 2019 14:42:54 GMT

<Response body is empty> 

Wenn sie nicht existiert, wird der Status 404 Not Found zurückgegeben:

Codeblock
HEAD /sandbox/v2/urns/urn/urn:nbn:de:example-nicht-registriert
Codeblock
titleHEAD /sandbox/v2/urns/urn/urn:nbn:de:example-nicht-registriert
collapsetrue
HTTP/1.1 404 Not Found
Connection: keep-alive
Content-Type: application/json
Content-Length: 67
Date: Wed, 13 Feb 2019 14:44:45 GMT

<Response body is empty>

...

URN abfragen

URLs an einer URN abfragen

...