What are REST resources?

后端 未结 11 1130
青春惊慌失措
青春惊慌失措 2020-11-29 20:53

What are REST resources and how do they relate to resource names and resource representations?

I read a few articles on the subject, but they were too abstract and t

相关标签:
11条回答
  • 2020-11-29 21:27

    What is REST?

    REST is an architecture Style which stands for Representational(RE) State(S) transfer(T).

    What is REST Resource ?

    Rest Resource is data on which we want to perform operation(s).So this data can be present in database as record(s) of table(s) or in any other form.This record has unique identifier with which it can be identified like id for Employee.

    Now when this data is requested by unique url like http://www.example.com/employees/123,so ultimately data or record which is present in database will be converted to JSON/XML/Plain text format by Rest Service and will be sent to Consumer.

    So basically,what is happening here is REPRESENTATIONAL STATE TRANSFER, in a way that state of the data present in database is transferred to another format which can be JSON/XML or plain text.

    So in this case 1 employee represents 1 resource which can be accessed by unique url like http://www.example.com/employees/123

    In case we want to get list of all resources(employees),we will do: http://www.example.com/employees

    Hope this will help.

    0 讨论(0)
  • 2020-11-29 21:34

    REST stands for REpresentational State Transfer. It's a method of transferring variable information from one location to another. A common method of doing this is using JSON - a way of formatting your variables so that they can be transferred without loss of information.

    PHP, for example, has built in JSON support. Passing a PHP array to json_encode($array) will output a string in the format you posted (which by the way, is indeed a REST resource, because it gives you variables and information).

    In PHP, the array you posted would turn out as:

    Array (
    
        [0]=>Array (
            ['id']=>6;
            ['name']=>'John';
        )
        [1]=>Array (
            ['id']=>7;
            ['name']=>'Jane';
        )
    
    )
    
    0 讨论(0)
  • 2020-11-29 21:36

    What’s a Resource?

    A resource is anything that’s important enough to be referenced as a thing in itself. If your users might “want to create a hypertext link to it, make or refute assertions about it, retrieve or cache a representation of it, include all or part of it by reference into another representation, annotate it, or perform other operations on it”, then you should make it a resource.

    Usually, a resource is something that can be stored on a computer and represented as a stream of bits: a document, a row in a database, or the result of running an algorithm. A resource may be a physical object like an apple, or an abstract concept like courage, but (as we’ll see later) the representations of such resources are bound to be disappointing. Here are some possible resources:

    • Version 1.0.3 of the software release
    • The latest version of the software release
    • The first weblog entry for October 24, 2006
    • A road map of Little Rock, Arkansas
    • Some information about jellyfish
    • A directory of resources pertaining to jellyfish
    • The next prime number after 1024
    • The next five prime numbers after 1024
    • The sales numbers for Q42004
    • The relationship between two acquaintances, Alice and Bob
    • A list of the open bugs in the bug database

    The text is from the O'Reilly book "RESTful Web Services".

    0 讨论(0)
  • 2020-11-29 21:37

    REST

    This architectural style was defined in the chapter 5 of Roy T. Fielding's dissertation.

    REST is about resource state manipulation through their representations on the top of stateless communication between client and server. It's a protocol independent architectural style but, in practice, it's commonly implemented on the top of the HTTP protocol.

    Resources

    The resource itself is an abstraction and, in the words of the author, a resource can be any information that can be named. The domain entities of an application (e.g. a person, a user, a invoice, a collection of invoices, etc) can be resources. See the following quote from Fielding's dissertation:

    5.2.1.1 Resources and Resource Identifiers

    The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's hypertext reference must fit within the definition of a resource. A resource is a conceptual mapping to a set of entities, not the entity that corresponds to the mapping at any particular point in time.

    More precisely, a resource R is a temporally varying membership function MR(t), which for time t maps to a set of entities, or values, which are equivalent. The values in the set may be resource representations and/or resource identifiers. [...]

    Resource representations

    A JSON document is resource representation that allows you to represent the state of a resource. A server can provide different representations for the same resource. For example, using XML and JSON documents. A client can use content negotiation to request different representations of the same resource.

    Quoting Fielding's dissertation:

    5.2.1.2 Representations

    REST components perform actions on a resource by using a representation to capture the current or intended state of that resource and transferring that representation between components. A representation is a sequence of bytes, plus representation metadata to describe those bytes. Other commonly used but less precise names for a representation include: document, file, and HTTP message entity, instance, or variant.

    A representation consists of data, metadata describing the data, and, on occasion, metadata to describe the metadata (usually for the purpose of verifying message integrity). Metadata is in the form of name-value pairs, where the name corresponds to a standard that defines the value's structure and semantics. Response messages may include both representation metadata and resource metadata: information about the resource that is not specific to the supplied representation. [...]

    Over HTTP, request and response headers can be used to exchange metadata about the representation.

    Resource identifiers

    A URL a resource identifier that identifies/locates a resource in the server.


    This answer may also be insightful.

    0 讨论(0)
  • 2020-11-29 21:38

    What are REST resources and how do they relate to resource names and resource representations?

    REST doesn't mean a great deal more then you use HTTP verbs (GET, POST, PUT, DELETE, etc) properly.

    Is the following URL a resource?

    All URLs are strings that tell computers where a resource can be located. (Hence the name: Uniform Resource Locator).

    0 讨论(0)
  • 2020-11-29 21:38

    You've only provided what appear to be relative parameters rather than "ID" which is (or should be) concrete. Remember, get operations should be idempotent (i.e. repeatable with the same outcome).

    0 讨论(0)
提交回复
热议问题