¿Cuál es la diferencia entre recurso y punto final?


139

He escuchado que "recurso" y "punto final" se refieren a lo mismo. Parece que recurso es un término más nuevo.

¿Cuál es la diferencia entre ellos? ¿El "recurso" implica un diseño RESTful?

Respuestas:


107

DESCANSO

Resource es un subconjunto RESTful de Endpoint .

Un punto final en sí mismo es la ubicación donde se puede acceder a un servicio:

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

Un recurso se refiere a uno o más sustantivos que se sirven, representados en espacios de nombres, porque es fácil para los humanos comprender:

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

Todo lo anterior podría considerarse puntos finales de servicio, pero solo el grupo inferior se consideraría recursos, hablando RESTANTE. El grupo superior no es expresivo con respecto al contenido que proporciona.

Una solicitud REST es como una oración compuesta de sustantivos (recursos) y verbos (métodos HTTP):

  • GET(método) el usuario llamado johnny(recurso).
  • DELETE(método) el libro con id 1234(recurso).

Sin descanso

El punto final generalmente se refiere a un servicio, pero el recurso podría significar muchas cosas. Aquí hay algunos ejemplos de recursos que dependen del contexto en el que se usan.

URL: Localizador uniforme de "recursos"

  • Podría ser RESTANTE, pero a menudo no lo es. En este caso, punto final es casi sinónimo.

Administracion de recursos

Diccionario

  • Las definiciones proporcionan muchos más usos de la palabra.

Algo que puede usarse para ayudarlo:

La biblioteca era un recurso valioso y con frecuencia la utilizaba.

Los recursos son sustancias naturales como el agua y la madera que son valiosas para mantener la vida:

[pl] La tierra tiene recursos limitados, y si no los reciclamos, los usamos.

Los recursos también son cosas de valor, como dinero o posesiones, que puede usar cuando los necesite:

[pl] El gobierno no tiene los recursos para contratar el número de maestros necesarios.


La moral

El término recurso, por definición, tiene muchos matices. Todo depende del contexto en el que se use.


1
Sospeché lo mismo. ¿Has visto alguna referencia que explique o documente esto?
B Seven

Se agregaron algunos enlaces que dan una idea de cada uno de los términos.
cchamberlain 01 de

84

Los términos recurso y punto final a menudo se usan como sinónimos. Pero, de hecho, no significan lo mismo.

El término punto final se centra en la URL que se utiliza para realizar una solicitud.
El término recurso se centra en el conjunto de datos que devuelve una solicitud.

Ahora, se puede acceder al mismo recurso a través de múltiples puntos finales diferentes .
Además, el mismo punto final puede devolver diferentes recursos , dependiendo de una cadena de consulta.

Veamos algunos ejemplos:

Diferentes puntos finales que acceden al mismo recurso

Eche un vistazo a los siguientes ejemplos de diferentes puntos finales :

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

Obviamente, todos podrían acceder al mismo recurso en una API determinada.

También una API existente podría cambiarse por completo. Esto podría conducir a nuevos puntos finales que accederían a los mismos recursos antiguos utilizando URL totalmente nuevas y diferentes:

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

Un punto final que accede a diferentes recursos

Si su punto final devuelve una colección, puede implementar la búsqueda / filtrado / clasificación utilizando cadenas de consulta. Como resultado, las siguientes URL utilizan el mismo punto final ( /api/companies), pero pueden devolver diferentes recursos (o colecciones de recursos , que por definición son recursos en sí mismos):

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

44
bien explicado 👍🏻
mangonights

1
"Como resultado, todas las siguientes URL utilizan el mismo punto final (/ api / companies), pero pueden devolver diferentes recursos". No quiero ofenderte, pero en realidad solo estás inventando tu interpretación aquí. En términos de REST, estas son solo ubicaciones de diferentes recursos. La parte del punto final que ha intentado explicar como otra parte de la URL. Es porque eres un programador y estás pensando en cómo se implementa, como un fragmento de código en un único método de acción. Imagine que todas estas URL diferentes se enrutaron y sirvieron desde 4 servidores, ¿son todas ellas el mismo punto final? No tiene sentido ahora.
Luke Puplett el

1
La razón por la que las cadenas de consulta no son parte de los puntos finales es porque el punto final no es parte del lenguaje de REST ni de una URL. Simplemente no lo es. Estás pensando en términos de codificación de la aplicación web de manejo. REST no menciona nada sobre los parámetros de consulta o la clasificación ni nada. Simplemente no lo hace. Si usa / orders para devolver una colección y / orders? Top = 10 son solo URL bonitas, no es más o menos RESTful que usar enlaces a / 32knre32nj para la colección y un enlace a / abcd para los diez primeros pedidos. Son solo identificadores de recursos. Las URL no pueden ser más o menos RESTful y un punto final no es una cosa.
Luke Puplett el

Solo para agregar, una parte crítica de REST es la vinculación, de modo que un consumidor no tenga que preocuparse por los identificadores de recursos, mucho no me importa cuál es la URL detrás del botón Agregar comentario aquí. Cuando dejamos de pensar en puntos finales y URL bonitas y, en su lugar, en hipervínculos donde la URL es incidental, es mucho más fácil diseñar APIs basadas en un flujo de trabajo agradable en el objetivo de interacción: quiero buscar una empresa para que x: su API sea un viaje a x donde la búsqueda está en el medio del flujo al estado de aplicación eventual.
Luke Puplett el

No existe una definición o especificación altamente canónica para "punto final". Todo se reduce a la tecnología a la que se hace referencia. Caso en cuestión, google "¿Qué es un punto final?" y uno de los principales artículos sobre el tema es esta página. Lo estamos definiendo aquí en función del contexto con el que lo hemos visto utilizado. Todos los ejemplos en esta respuesta son RESTful, aunque el punto final en sí no es necesariamente RESTful. Ver jabón.
cchamberlain

7

Posiblemente la mía no sea una gran respuesta, pero aquí va.

Dado que trabajé más con servicios web verdaderamente RESTful a través de HTTP, he tratado de alejar a las personas del uso del término punto final ya que no tiene una definición clara, y en su lugar uso el lenguaje de REST, que es recursos y ubicaciones de recursos.

En mi opinión, el punto final es un término TCP. Se combina con HTTP porque parte de la URL identifica un servidor de escucha.

Por lo tanto, recursos no es un término más nuevo, no creo, creo que el punto final siempre fue malversado y nos estamos dando cuenta de eso a medida que nos concentramos en REST como un estilo de API.

Editar

Yo blogueé sobre esto.

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


1

Según https://apiblueprint.org/documentation/examples/13-named-endpoints.html es un recurso, un lugar "general" de almacenamiento de la entidad dada, por ejemplo, / clients / 30654 / orders, mientras que un punto final es la acción concreta (Método HTTP) sobre el recurso dado. Por lo tanto, un recurso puede tener múltiples puntos finales.


1
Lo siento @Dafka, pero estás equivocado. Un punto final no tiene nada que ver con el verbo (método HTTP como GET, POST, PUT, DELETE, PATCH) que se está utilizando en él.
Jpsy

0

Considere un servidor que tenga la información de usuarios, misiones y sus puntos de recompensa.

  1. Los usuarios y los puntos de recompensa son los recursos
  2. Un punto final puede relacionarse con más de un recurso
  3. Los puntos finales se pueden describir utilizando una descripción o una URL completa o parcial

ingrese la descripción de la imagen aquí

Fuente: API Endpoints vs Resources


-1

1. Descripción del recurso "Recursos" se refiere a la información devuelta por una API.

2. Puntos finales y métodos Los puntos finales indican cómo accede al recurso, mientras que el método indica las interacciones permitidas (como GET, POST o DELETE) con el recurso.

Información adicional: 3. Parámetros Los parámetros son opciones que puede pasar con el punto final (como especificar el formato de respuesta o la cantidad devuelta) para influir en la respuesta.

4. Ejemplo de solicitud El ejemplo de solicitud incluye una solicitud de muestra utilizando el punto final, que muestra algunos parámetros configurados.

5. Ejemplo de respuesta y esquema El ejemplo de respuesta muestra una respuesta de muestra del ejemplo de solicitud; El esquema de respuesta define todos los elementos posibles en la respuesta.

Fuente- Enlace de referencia

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.