What exactly is RESTful programming?

前端 未结 30 3206
Happy的楠姐
Happy的楠姐 2020-11-21 06:02

What exactly is RESTful programming?

相关标签:
30条回答
  • 2020-11-21 06:20

    What is API Testing?

    API testing utilizes programming to send calls to the API and get the yield. It testing regards the segment under test as a black box. The objective of API testing is to confirm right execution and blunder treatment of the part preceding its coordination into an application.

    REST API

    REST: Representational State Transfer.

    • It’s an arrangement of functions on which the testers performs requests and receive responses. In REST API interactions are made via HTTP protocol.
    • REST also permits communication between computers with each other over a network.
    • For sending and receiving messages, it involves using HTTP methods, and it does not require a strict message definition, unlike Web services.
    • REST messages often accepts the form either in form of XML, or JavaScript Object Notation (JSON).

    4 Commonly Used API Methods:-

    1. GET: – It provides read only access to a resource.
    2. POST: – It is used to create or update a new resource.
    3. PUT: – It is used to update or replace an existing resource or create a new resource.
    4. DELETE: – It is used to remove a resource.

    Steps to Test API Manually:-

    To use API manually, we can use browser based REST API plugins.

    1. Install POSTMAN(Chrome) / REST(Firefox) plugin
    2. Enter the API URL
    3. Select the REST method
    4. Select content-Header
    5. Enter Request JSON (POST)
    6. Click on send
    7. It will return output response

    Steps to Automate REST API

    0 讨论(0)
  • 2020-11-21 06:21

    I would say RESTful programming would be about creating systems (API) that follow the REST architectural style.

    I found this fantastic, short, and easy to understand tutorial about REST by Dr. M. Elkstein and quoting the essential part that would answer your question for the most part:

    Learn REST: A Tutorial

    REST is an architecture style for designing networked applications. The idea is that, rather than using complex mechanisms such as CORBA, RPC or SOAP to connect between machines, simple HTTP is used to make calls between machines.

    • In many ways, the World Wide Web itself, based on HTTP, can be viewed as a REST-based architecture.

    RESTful applications use HTTP requests to post data (create and/or update), read data (e.g., make queries), and delete data. Thus, REST uses HTTP for all four CRUD (Create/Read/Update/Delete) operations.

    I don't think you should feel stupid for not hearing about REST outside Stack Overflow..., I would be in the same situation!; answers to this other SO question on Why is REST getting big now could ease some feelings.

    0 讨论(0)
  • 2020-11-21 06:22

    REST is the underlying architectural principle of the web. The amazing thing about the web is the fact that clients (browsers) and servers can interact in complex ways without the client knowing anything beforehand about the server and the resources it hosts. The key constraint is that the server and client must both agree on the media used, which in the case of the web is HTML.

    An API that adheres to the principles of REST does not require the client to know anything about the structure of the API. Rather, the server needs to provide whatever information the client needs to interact with the service. An HTML form is an example of this: The server specifies the location of the resource and the required fields. The browser doesn't know in advance where to submit the information, and it doesn't know in advance what information to submit. Both forms of information are entirely supplied by the server. (This principle is called HATEOAS: Hypermedia As The Engine Of Application State.)

    So, how does this apply to HTTP, and how can it be implemented in practice? HTTP is oriented around verbs and resources. The two verbs in mainstream usage are GET and POST, which I think everyone will recognize. However, the HTTP standard defines several others such as PUT and DELETE. These verbs are then applied to resources, according to the instructions provided by the server.

    For example, Let's imagine that we have a user database that is managed by a web service. Our service uses a custom hypermedia based on JSON, for which we assign the mimetype application/json+userdb (There might also be an application/xml+userdb and application/whatever+userdb - many media types may be supported). The client and the server have both been programmed to understand this format, but they don't know anything about each other. As Roy Fielding points out:

    A REST API should spend almost all of its descriptive effort in defining the media type(s) used for representing resources and driving application state, or in defining extended relation names and/or hypertext-enabled mark-up for existing standard media types.

    A request for the base resource / might return something like this:

    Request

    GET /
    Accept: application/json+userdb
    

    Response

    200 OK
    Content-Type: application/json+userdb
    
    {
        "version": "1.0",
        "links": [
            {
                "href": "/user",
                "rel": "list",
                "method": "GET"
            },
            {
                "href": "/user",
                "rel": "create",
                "method": "POST"
            }
        ]
    }
    

    We know from the description of our media that we can find information about related resources from sections called "links". This is called Hypermedia controls. In this case, we can tell from such a section that we can find a user list by making another request for /user:

    Request

    GET /user
    Accept: application/json+userdb
    

    Response

    200 OK
    Content-Type: application/json+userdb
    
    {
        "users": [
            {
                "id": 1,
                "name": "Emil",
                "country: "Sweden",
                "links": [
                    {
                        "href": "/user/1",
                        "rel": "self",
                        "method": "GET"
                    },
                    {
                        "href": "/user/1",
                        "rel": "edit",
                        "method": "PUT"
                    },
                    {
                        "href": "/user/1",
                        "rel": "delete",
                        "method": "DELETE"
                    }
                ]
            },
            {
                "id": 2,
                "name": "Adam",
                "country: "Scotland",
                "links": [
                    {
                        "href": "/user/2",
                        "rel": "self",
                        "method": "GET"
                    },
                    {
                        "href": "/user/2",
                        "rel": "edit",
                        "method": "PUT"
                    },
                    {
                        "href": "/user/2",
                        "rel": "delete",
                        "method": "DELETE"
                    }
                ]
            }
        ],
        "links": [
            {
                "href": "/user",
                "rel": "create",
                "method": "POST"
            }
        ]
    }
    

    We can tell a lot from this response. For instance, we now know we can create a new user by POSTing to /user:

    Request

    POST /user
    Accept: application/json+userdb
    Content-Type: application/json+userdb
    
    {
        "name": "Karl",
        "country": "Austria"
    }
    

    Response

    201 Created
    Content-Type: application/json+userdb
    
    {
        "user": {
            "id": 3,
            "name": "Karl",
            "country": "Austria",
            "links": [
                {
                    "href": "/user/3",
                    "rel": "self",
                    "method": "GET"
                },
                {
                    "href": "/user/3",
                    "rel": "edit",
                    "method": "PUT"
                },
                {
                    "href": "/user/3",
                    "rel": "delete",
                    "method": "DELETE"
                }
            ]
        },
        "links": {
           "href": "/user",
           "rel": "list",
           "method": "GET"
        }
    }
    

    We also know that we can change existing data:

    Request

    PUT /user/1
    Accept: application/json+userdb
    Content-Type: application/json+userdb
    
    {
        "name": "Emil",
        "country": "Bhutan"
    }
    

    Response

    200 OK
    Content-Type: application/json+userdb
    
    {
        "user": {
            "id": 1,
            "name": "Emil",
            "country": "Bhutan",
            "links": [
                {
                    "href": "/user/1",
                    "rel": "self",
                    "method": "GET"
                },
                {
                    "href": "/user/1",
                    "rel": "edit",
                    "method": "PUT"
                },
                {
                    "href": "/user/1",
                    "rel": "delete",
                    "method": "DELETE"
                }
            ]
        },
        "links": {
           "href": "/user",
           "rel": "list",
           "method": "GET"
        }
    }
    

    Notice that we are using different HTTP verbs (GET, PUT, POST, DELETE etc.) to manipulate these resources, and that the only knowledge we presume on the client's part is our media definition.

    Further reading:

    • The many much better answers on this very page.
    • How I explained REST to my wife.
    • How I explained REST to my wife.
    • Martin Fowler's thoughts
    • PayPal's API has hypermedia controls

    (This answer has been the subject of a fair amount of criticism for missing the point. For the most part, that has been a fair critique. What I originally described was more in line with how REST was usually implemented a few years ago when I first wrote this, rather than its true meaning. I've revised the answer to better represent the real meaning.)

    0 讨论(0)
  • 2020-11-21 06:22

    A great book on REST is REST in Practice.

    Must reads are Representational State Transfer (REST) and REST APIs must be hypertext-driven

    See Martin Fowlers article the Richardson Maturity Model (RMM) for an explanation on what an RESTful service is.

    Richardson Maturity Model

    To be RESTful a Service needs to fulfill the Hypermedia as the Engine of Application State. (HATEOAS), that is, it needs to reach level 3 in the RMM, read the article for details or the slides from the qcon talk.

    The HATEOAS constraint is an acronym for Hypermedia as the Engine of Application State. This principle is the key differentiator between a REST and most other forms of client server system.

    ...

    A client of a RESTful application need only know a single fixed URL to access it. All future actions should be discoverable dynamically from hypermedia links included in the representations of the resources that are returned from that URL. Standardized media types are also expected to be understood by any client that might use a RESTful API. (From Wikipedia, the free encyclopedia)

    REST Litmus Test for Web Frameworks is a similar maturity test for web frameworks.

    Approaching pure REST: Learning to love HATEOAS is a good collection of links.

    REST versus SOAP for the Public Cloud discusses the current levels of REST usage.

    REST and versioning discusses Extensibility, Versioning, Evolvability, etc. through Modifiability

    0 讨论(0)
  • 2020-11-21 06:23

    REST is using the various HTTP methods (mainly GET/PUT/DELETE) to manipulate data.

    Rather than using a specific URL to delete a method (say, /user/123/delete), you would send a DELETE request to the /user/[id] URL, to edit a user, to retrieve info on a user you send a GET request to /user/[id]

    For example, instead a set of URLs which might look like some of the following..

    GET /delete_user.x?id=123
    GET /user/delete
    GET /new_user.x
    GET /user/new
    GET /user?id=1
    GET /user/id/1
    

    You use the HTTP "verbs" and have..

    GET /user/2
    DELETE /user/2
    PUT /user
    
    0 讨论(0)
  • 2020-11-21 06:23

    REST stands for Representational state transfer.

    It relies on a stateless, client-server, cacheable communications protocol -- and in virtually all cases, the HTTP protocol is used.

    REST is often used in mobile applications, social networking Web sites, mashup tools and automated business processes. The REST style emphasizes that interactions between clients and services is enhanced by having a limited number of operations (verbs). Flexibility is provided by assigning resources (nouns) their own unique universal resource indicators (URIs).

    Introduction about Rest

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