Qual é a diferença entre recurso e terminal?

139

Eu ouvi "recurso" e "ponto final" para se referir à mesma coisa. Parece que recurso é um termo mais recente.

Qual a diferença entre eles? "Recurso" implica um design RESTful?

B Seven
fonte

Respostas:

107

DESCANSAR

Recurso é um subconjunto RESTful do Endpoint .

Um terminal em si é o local onde um serviço pode ser acessado:

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

Um recurso refere-se a um ou mais substantivos que estão sendo veiculados, representados no espaço de nomes, porque é fácil para os seres humanos compreenderem:

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

Todas as opções acima podem ser consideradas pontos de extremidade de serviço, mas apenas o grupo inferior seria considerado recursos, falando REST. O grupo principal não é expressivo em relação ao conteúdo que fornece.

Uma solicitação REST é como uma frase composta por substantivos (recursos) e verbos (métodos HTTP):

  • GET(método) o usuário chamado johnny(recurso).
  • DELETE(método) o livro com o ID 1234(recurso).

Não REST

O ponto de extremidade normalmente se refere a um serviço, mas recurso pode significar muitas coisas. Aqui estão alguns exemplos de recursos que dependem do contexto em que são usados.

URL: Localizador uniforme de "recursos"

  • Pode ser RESTful, mas geralmente não é. Nesse caso, o ponto de extremidade é quase sinônimo.

Gestão de recursos

Dicionário

Algo que pode ser usado para ajudá-lo:

A biblioteca era um recurso valioso, e ele freqüentemente fazia uso dele.

Recursos são substâncias naturais, como água e madeira, valiosas para sustentar a vida:

[pl] A Terra tem recursos limitados e, se não os reciclarmos, usá-los.

Recursos também são itens de valor, como dinheiro ou bens, que você pode usar quando precisar:

[pl] O governo não tem recursos para contratar o número de professores necessários.


A moral

O termo recurso, por definição, tem muitas nuances. Tudo depende do contexto em que é usado.

cchamberlain
fonte
1
Eu suspeitava o mesmo. Você já viu alguma referência que explique ou documente isso?
B Sete
Adicionados alguns links que dão uma ideia de cada um dos termos.
Cchamberlain
84

Os termos recurso e terminal são frequentemente usados ​​como sinônimos. Mas, na verdade, eles não significam a mesma coisa.

O termo terminal é focado no URL usado para fazer uma solicitação.
O termo recurso é focado no conjunto de dados retornado por uma solicitação.

Agora, o mesmo recurso geralmente pode ser acessado por vários pontos de extremidade diferentes .
Além disso, o mesmo terminal pode retornar recursos diferentes , dependendo de uma sequência de consultas.

Vamos ver alguns exemplos:

Pontos de extremidade diferentes acessando o mesmo recurso

Veja os seguintes exemplos de diferentes pontos de extremidade :

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

Obviamente, todos eles poderiam acessar o mesmo recurso em uma determinada API.

Também uma API existente pode ser alterada completamente. Isso poderia levar a novos pontos de extremidade que acessariam os mesmos recursos antigos usando URLs totalmente novos e diferentes:

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

Um terminal acessando recursos diferentes

Se seu nó de extremidade retornar uma coleção, você poderá implementar a pesquisa / filtragem / classificação usando cadeias de consulta. Como resultado, todos os seguintes URLs usam o mesmo ponto de extremidade ( /api/companies), mas podem retornar recursos diferentes (ou coleções de recursos , que por definição são recursos em si):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens
Jpsy
fonte
4
bem explicada 👍🏻
mangonights
1
"Como resultado, todos os URLs a seguir usam o mesmo ponto de extremidade (/ api / companies), mas podem retornar recursos diferentes." Não quero ofender, mas você está realmente inventando sua interpretação aqui. Em termos de REST, esses são apenas locais de diferentes recursos. A parte do ponto de extremidade que você tentou considerar como outra parte do URL. É porque você é um programador e está pensando em como isso é implementado, como um pedaço de código em um único método de ação. Imagine que todos esses URLs diferentes foram roteados e veiculados em 4 servidores, todos eles são o mesmo ponto de extremidade? Não faz sentido agora.
Luke Puplett
1
O motivo pelo qual as strings de consulta não fazem parte dos pontos de extremidade é porque o ponto de extremidade não faz parte do idioma do REST nem de um URL. Simplesmente não é. Você está pensando em termos de codificação do aplicativo da web de manipulação. O REST não menciona nada sobre parâmetros de consulta ou classificação ou qualquer coisa. Simplesmente não. Se você usa / orders para retornar uma coleção e / orders? Top = 10 são apenas URLs bonitas, não é mais ou menos RESTful do que usar links para / 32knre32nj para a coleção e um link para / abcd para os dez principais pedidos. Eles são apenas identificadores de recursos. Os URLs não podem ser mais ou menos RESTful e um ponto de extremidade não é uma coisa.
Luke Puplett
Apenas para adicionar, uma parte crítica do REST é a vinculação, de modo que um consumidor não precise se importar com os identificadores de recursos, por isso não me importo com o que a URL está atrás do botão Adicionar comentário aqui. Quando paramos de pensar em terminais e URLs bonitas e, em vez disso, em hiperlinks onde a URL é incidental, é muito mais fácil criar APIs baseadas em fluxo de trabalho com base no objetivo de interação - quero procurar uma empresa para que x - sua API seja uma jornada x em que a pesquisa está no meio do fluxo para o estado final do aplicativo.
Luke Puplett
Não há definição ou especificação altamente canônica para "terminal". Tudo se resume à tecnologia usada em referência. Caso em questão, google "O que é um endpoint?" e um dos principais artigos sobre o assunto é esta página. Estamos definindo aqui com base no contexto em que o usamos. Todos os exemplos nesta resposta são RESTful, embora o próprio ponto de extremidade não seja necessariamente RESTful. Veja SOAP.
Cchamberlain 15/06/19
7

Possivelmente a minha não é uma ótima resposta, mas aqui vai.

Desde que trabalhei mais com serviços da Web verdadeiramente RESTful sobre HTTP, tentei desviar as pessoas do uso do termo endpoint, pois ele não tem uma definição clara, e usar a linguagem do REST, que é recursos e localizações de recursos.

Na minha opinião, endpoint é um termo TCP. Ele está em conflito com o HTTP porque parte da URL identifica um servidor de escuta.

Portanto, recurso não é um termo mais novo, acho que acho que o ponto de extremidade sempre foi inapropriado e estamos percebendo isso ao pensar no REST como um estilo de API.

Editar

Eu escrevi sobre isso.

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

Luke Puplett
fonte
1

Segundo https://apiblueprint.org/documentation/examples/13-named-endpoints.html, é um recurso um local "geral" de armazenamento da entidade especificada - por exemplo, / customers / 30654 / orders, enquanto um endpoint é a ação concreta (Método HTTP) sobre o recurso fornecido. Portanto, um recurso pode ter vários pontos de extremidade.

Dafka
fonte
1
Desculpe @Dafka, mas você está errado. Um terminal não tem nada a ver com o verbo (método HTTP como GET, POST, PUT, DELETE, PATCH) que está sendo usado nele.
Jpsy # 25/18
0

Considere um servidor que tenha as informações de usuários, missões e seus pontos de recompensa.

  1. Usuários e Reward Points são os recursos
  2. Um ponto final pode estar relacionado a mais de um recurso
  3. Os pontos de extremidade podem ser descritos usando uma descrição ou um URL completo ou parcial

insira a descrição da imagem aqui

Fonte: pontos finais da API x recursos

srinivas chaitanya
fonte
-1

1. Descrição do recurso "Recursos" refere-se às informações retornadas por uma API.

2. Pontos de extremidade e métodos Os pontos de extremidade indicam como você acessa o recurso, enquanto o método indica as interações permitidas (como GET, POST ou DELETE) com o recurso.

Informações adicionais: 3. Parâmetros Parâmetros são opções que você pode passar com o terminal (como especificar o formato da resposta ou a quantidade retornada) para influenciar a resposta.

4. Exemplo de solicitação O exemplo de solicitação inclui uma solicitação de amostra usando o terminal, mostrando alguns parâmetros configurados.

5. Exemplo e esquema de resposta O exemplo de resposta mostra uma resposta de amostra do exemplo de solicitação; o esquema de resposta define todos os elementos possíveis na resposta.

Fonte - Link de referência

Manthan_Admane
fonte