Qual è la differenza tra risorsa ed endpoint?


139

Ho sentito sia "risorsa" che "endpoint" riferirsi alla stessa cosa. Sembra che la risorsa sia un termine più recente.

Qual'è la differenza tra loro? La "risorsa" implica un design RESTful?

Risposte:


107

RIPOSO

La risorsa è un sottoinsieme RESTful di endpoint .

Un endpoint da solo è la posizione in cui è possibile accedere a un servizio:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

Una risorsa si riferisce a uno o più sostantivi serviti, rappresentati in modo spaziale, perché è facile per gli umani comprendere:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

Tutto quanto sopra potrebbe essere considerato un endpoint di servizio, ma solo il gruppo inferiore verrebbe considerato risorse, RESTENTAMENTE parlando. Il gruppo principale non è espressivo per quanto riguarda il contenuto che fornisce.

Una richiesta REST è come una frase composta da nomi (risorse) e verbi (metodi HTTP):

  • GET(metodo) l'utente chiamato johnny(risorsa).
  • DELETE(metodo) il libro con ID 1234(risorsa).

Non-REST

L'endpoint si riferisce in genere a un servizio, ma la risorsa potrebbe significare molte cose. Ecco alcuni esempi di risorse che dipendono dal contesto in cui sono utilizzate.

URL: Localizzatore "Risorsa" uniforme

  • Potrebbe essere RESTful, ma spesso non lo è. In questo caso, endpoint è quasi sinonimo.

Gestione delle risorse

Dizionario

  • Le definizioni forniscono molti più usi della parola.

Qualcosa che può essere usato per aiutarti:

La biblioteca era una risorsa preziosa e la usava spesso.

Le risorse sono sostanze naturali come acqua e legno che sono preziose per sostenere la vita:

[pl] La terra ha risorse limitate e se non le ricicliamo le usiamo.

Le risorse sono anche cose di valore come denaro o beni che puoi usare quando ne hai bisogno:

[pl] Il governo non ha le risorse per assumere il numero di insegnanti necessari.


La morale

Il termine risorsa per definizione ha molte sfumature. Tutto dipende dal contesto in cui è utilizzato.


1
Ho sospettato lo stesso. Hai visto riferimenti che spiegano o documentano questo?
B Seven

Aggiunti alcuni collegamenti che danno un'idea di ciascuno dei termini.
cchamberlain,

84

I termini risorsa ed endpoint sono spesso usati come sinonimi. Ma in realtà non significano la stessa cosa.

Il termine endpoint si concentra sull'URL utilizzato per effettuare una richiesta.
Il termine risorsa si concentra sul set di dati restituito da una richiesta.

Ora, è possibile accedere alla stessa risorsa da più endpoint diversi .
Inoltre, lo stesso endpoint può restituire risorse diverse , a seconda di una stringa di query.

Vediamo alcuni esempi:

Endpoint diversi che accedono alla stessa risorsa

Dai un'occhiata ai seguenti esempi di endpoint diversi :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

Ovviamente tutti potevano accedere alla stessa risorsa in una determinata API.

Anche un'API esistente potrebbe essere completamente modificata. Ciò potrebbe portare a nuovi endpoint che accederanno alle stesse vecchie risorse utilizzando URL totalmente nuovi e diversi:

/api/employees/3
/new_api/staff/3

Un endpoint che accede a risorse diverse

Se l'endpoint restituisce una raccolta, è possibile implementare la ricerca / il filtro / l'ordinamento utilizzando le stringhe di query. Di conseguenza, i seguenti URL utilizzano tutti lo stesso endpoint ( /api/companies), ma possono restituire risorse diverse (o raccolte di risorse , che per definizione sono risorse in sé):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
ben spiegato 👍🏻
mangonights

1
"Di conseguenza, i seguenti URL utilizzano tutti lo stesso endpoint (/ api / companies), ma possono restituire risorse diverse." Non intendo offenderti, ma stai davvero inventando la tua interpretazione qui. In termini di REST, queste sono solo posizioni di diverse risorse. La parte dell'endpoint che hai provato a considerare come un'altra parte dell'URL. È perché sei un programmatore e stai pensando a come è stato implementato, come un pezzo di codice in un singolo metodo di azione. Immagina che tutti questi URL diversi siano stati instradati e pubblicati da 4 server, sono tutti lo stesso endpoint? Non ha senso adesso.
Luke Puplett,

1
Il motivo per cui le stringhe di query non fanno parte degli endpoint è perché l'endpoint non fa parte della lingua di REST né di un URL. Semplicemente non lo è. Stai pensando in termini di codifica dell'applicazione Web di gestione. REST non menziona nulla sui parametri di query o l'ordinamento o altro. Semplicemente no. Se usi / ordini per restituire una raccolta e / ordini? Top = 10 sono solo URL graziosi, non è più o meno RESTful dell'uso dei collegamenti a / 32knre32nj per la raccolta e un collegamento a / abcd per i primi dieci ordini. Sono solo identificatori di risorse. Gli URL non possono essere più o meno RESTful e un endpoint non è una cosa.
Luke Puplett,

Solo per aggiungere, una parte critica di REST è il collegamento, in modo tale che un consumatore non deve preoccuparsi degli identificatori di risorse, tanto non mi interessa quale URL si trovi dietro il pulsante Aggiungi commento qui. Quando smettiamo di pensare agli endpoint e agli URL carini e invece ai collegamenti ipertestuali in cui l'URL è secondario, è molto più facile progettare API basate su flussi di lavoro utili sull'obiettivo di interazione: voglio cercare un'azienda in modo che x: la tua API dovrebbe essere un viaggio a x dove la ricerca si trova nel mezzo del flusso verso l'eventuale stato dell'applicazione.
Luke Puplett,

Non esiste una definizione o specifica altamente canonica per "endpoint". Tutto si riduce alla tecnologia utilizzata in riferimento. Caso in questione, google "Che cos'è un endpoint?" e uno dei principali articoli sull'argomento è questa pagina. Lo stiamo definendo qui in base al contesto con cui l'abbiamo visto usato. Tutti gli esempi in questa risposta sono RESTful, sebbene l'endpoint stesso non sia necessariamente RESTful. Vedi SAPONE.
cchamberlain,

7

Forse la mia non è un'ottima risposta ma qui va.

Da quando ho lavorato di più con servizi Web veramente RESTful su HTTP, ho cercato di allontanare le persone dall'usare il termine endpoint poiché non ha una definizione chiara, e invece usare la lingua di REST che è risorse e posizioni delle risorse.

A mio avviso, endpoint è un termine TCP. È confuso con HTTP perché parte dell'URL identifica un server in ascolto.

Quindi la risorsa non è un termine più recente, non penso, penso che l'endpoint sia stato sempre appropriatamente sottratto e ce ne stiamo accorgendo mentre ci stiamo concentrando su REST come uno stile di API.

modificare

Ho blog su questo.

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

Secondo https://apiblueprint.org/documentation/examples/13-named-endpoints.html è una risorsa un luogo "generale" di archiviazione di una determinata entità - ad es. / Customers / 30654 / ordini, mentre un endpoint è l'azione concreta (Metodo HTTP) su una determinata risorsa. Quindi una risorsa può avere più endpoint.


1
Scusa @Dafka, ma ti sbagli. Un endpoint non ha nulla a che fare con il verbo (metodo HTTP come GET, POST, PUT, DELETE, PATCH) che viene utilizzato su di esso.
Jpsy,

0

Prendi in considerazione un server che contenga informazioni su utenti, missioni e relativi punti premio.

  1. Utenti e punti fedeltà sono le risorse
  2. Un punto finale può riguardare più di una risorsa
  3. Gli endpoint possono essere descritti utilizzando una descrizione o un URL completo o parziale

inserisci qui la descrizione dell'immagine

Fonte: endpoint API vs risorse


-1

1. Descrizione della risorsa "Risorse" si riferisce alle informazioni restituite da un'API.

2. Endpoint e metodi Gli endpoint indicano come accedere alla risorsa, mentre il metodo indica le interazioni consentite (come GET, POST o DELETE) con la risorsa.

Informazioni addizionali: 3. Parametri I parametri sono opzioni che è possibile passare con l'endpoint (come specificare il formato di risposta o l'importo restituito) per influenzare la risposta.

4. Richiedi un esempio richiesta L' richiesta include una richiesta di esempio che utilizza l'endpoint, mostrando alcuni parametri configurati.

5. Esempio di risposta e schema L'esempio di risposta mostra una risposta di esempio dall'esempio di richiesta; lo schema di risposta definisce tutti i possibili elementi nella risposta.

Collegamento sorgente- riferimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.