diff options
| author | Tom Christie | 2014-12-08 16:38:29 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-12-08 16:38:29 +0000 | 
| commit | af3fe5a39fda7417b99353b2a1c1ee20785cf5a2 (patch) | |
| tree | 69996ed8116d5ef3f7466d34df0a3710ebc9b37a /docs | |
| parent | 4e9ebb5fe9eee2ef6f21718d9becfb8e94bbbe98 (diff) | |
| parent | 302ec59a5c8b97b5d6be1e50e16a33df51508a81 (diff) | |
| download | django-rest-framework-af3fe5a39fda7417b99353b2a1c1ee20785cf5a2.tar.bz2 | |
Merge branch 'master' of https://github.com/tomchristie/django-rest-framework
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/tutorial/1-serialization.md | 52 | ||||
| -rw-r--r-- | docs/tutorial/2-requests-and-responses.md | 57 | ||||
| -rw-r--r-- | docs/tutorial/4-authentication-and-permissions.md | 20 | ||||
| -rw-r--r-- | docs/tutorial/quickstart.md | 28 | 
4 files changed, 132 insertions, 25 deletions
| diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index 3621f01b..dea43cc0 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -326,17 +326,51 @@ Quit out of the shell...  In another terminal window, we can test the server. -We can get a list of all of the snippets. - -	curl http://127.0.0.1:8000/snippets/ - -	[{"id": 1, "title": "", "code": "foo = \"bar\"\n", "linenos": false, "language": "python", "style": "friendly"}, {"id": 2, "title": "", "code": "print \"hello, world\"\n", "linenos": false, "language": "python", "style": "friendly"}] +We can test our API using using [curl][curl] or [httpie][httpie]. Httpie is a user friendly http client that's written in Python. Let's install that. + +You can install httpie using pip: + +    pip install httpie + +Finally, we can get a list of all of the snippets: + +    http http://127.0.0.1:8000/snippets/ + +    HTTP/1.1 200 OK +    ... +    [ +      { +        "id": 1, +        "title": "", +        "code": "foo = \"bar\"\n", +        "linenos": false, +        "language": "python", +        "style": "friendly" +      }, +      { +        "id": 2, +        "title": "", +        "code": "print \"hello, world\"\n", +        "linenos": false, +        "language": "python", +        "style": "friendly" +      } +    ] -Or we can get a particular snippet by referencing its id. +Or we can get a particular snippet by referencing its id: -	curl http://127.0.0.1:8000/snippets/2/ +    http http://127.0.0.1:8000/snippets/2/ -	{"id": 2, "title": "", "code": "print \"hello, world\"\n", "linenos": false, "language": "python", "style": "friendly"} +    HTTP/1.1 200 OK +    ... +    { +      "id": 2, +      "title": "", +      "code": "print \"hello, world\"\n", +      "linenos": false, +      "language": "python", +      "style": "friendly" +    }  Similarly, you can have the same json displayed by visiting these URLs in a web browser. @@ -353,3 +387,5 @@ We'll see how we can start to improve things in [part 2 of the tutorial][tut-2].  [sandbox]: http://restframework.herokuapp.com/  [virtualenv]: http://www.virtualenv.org/en/latest/index.html  [tut-2]: 2-requests-and-responses.md +[httpie]: https://github.com/jakubroztocil/httpie#installation +[curl]: http://curl.haxx.se diff --git a/docs/tutorial/2-requests-and-responses.md b/docs/tutorial/2-requests-and-responses.md index f377c712..49e96d03 100644 --- a/docs/tutorial/2-requests-and-responses.md +++ b/docs/tutorial/2-requests-and-responses.md @@ -127,31 +127,64 @@ Go ahead and test the API from the command line, as we did in [tutorial part 1][  We can get a list of all of the snippets, as before. -	curl http://127.0.0.1:8000/snippets/ - -	[{"id": 1, "title": "", "code": "foo = \"bar\"\n", "linenos": false, "language": "python", "style": "friendly"}, {"id": 2, "title": "", "code": "print \"hello, world\"\n", "linenos": false, "language": "python", "style": "friendly"}] +    http http://127.0.0.1:8000/snippets/ + +    HTTP/1.1 200 OK +    ... +    [ +      { +        "id": 1, +        "title": "", +        "code": "foo = \"bar\"\n", +        "linenos": false, +        "language": "python", +        "style": "friendly" +      }, +      { +        "id": 2, +        "title": "", +        "code": "print \"hello, world\"\n", +        "linenos": false, +        "language": "python", +        "style": "friendly" +      } +    ]  We can control the format of the response that we get back, either by using the `Accept` header: -    curl http://127.0.0.1:8000/snippets/ -H 'Accept: application/json'  # Request JSON -    curl http://127.0.0.1:8000/snippets/ -H 'Accept: text/html'         # Request HTML +    http http://127.0.0.1:8000/snippets/ Accept:application/json  # Request JSON +    http http://127.0.0.1:8000/snippets/ Accept:text/html         # Request HTML  Or by appending a format suffix: -    curl http://127.0.0.1:8000/snippets/.json  # JSON suffix -    curl http://127.0.0.1:8000/snippets/.api   # Browsable API suffix +    http http://127.0.0.1:8000/snippets/.json  # JSON suffix +    http http://127.0.0.1:8000/snippets/.api   # Browsable API suffix  Similarly, we can control the format of the request that we send, using the `Content-Type` header.      # POST using form data -    curl -X POST http://127.0.0.1:8000/snippets/ -d "code=print 123" +    http --form POST http://127.0.0.1:8000/snippets/ code="print 123" -    {"id": 3, "title": "", "code": "print 123", "linenos": false, "language": "python", "style": "friendly"} +    { +      "id": 3, +      "title": "", +      "code": "print 123", +      "linenos": false, +      "language": "python", +      "style": "friendly" +    }      # POST using JSON -    curl -X POST http://127.0.0.1:8000/snippets/ -d '{"code": "print 456"}' -H "Content-Type: application/json" - -    {"id": 4, "title": "", "code": "print 456", "linenos": true, "language": "python", "style": "friendly"} +    http --json POST http://127.0.0.1:8000/snippets/ code="print 456" + +    { +        "id": 4, +        "title": "", +        "code": "print 456", +        "linenos": true, +        "language": "python", +        "style": "friendly" +    }  Now go and open the API in a web browser, by visiting [http://127.0.0.1:8000/snippets/][devserver]. diff --git a/docs/tutorial/4-authentication-and-permissions.md b/docs/tutorial/4-authentication-and-permissions.md index 43c1953e..a6d27bf7 100644 --- a/docs/tutorial/4-authentication-and-permissions.md +++ b/docs/tutorial/4-authentication-and-permissions.md @@ -198,15 +198,25 @@ If we're interacting with the API programmatically we need to explicitly provide  If we try to create a snippet without authenticating, we'll get an error: -    curl -i -X POST http://127.0.0.1:8000/snippets/ -d "code=print 123" +    http POST http://127.0.0.1:8000/snippets/ code="print 123" -    {"detail": "Authentication credentials were not provided."} +    { +        "detail": "Authentication credentials were not provided." +    }  We can make a successful request by including the username and password of one of the users we created earlier. -    curl -X POST http://127.0.0.1:8000/snippets/ -d "code=print 789" -u tom:password - -    {"id": 5, "owner": "tom", "title": "foo", "code": "print 789", "linenos": false, "language": "python", "style": "friendly"} +    http POST -a tom:password http://127.0.0.1:8000/snippets/ code="print 789" + +    { +        "id": 5, +        "owner": "tom", +        "title": "foo", +        "code": "print 789", +        "linenos": false, +        "language": "python", +        "style": "friendly" +    }  ## Summary diff --git a/docs/tutorial/quickstart.md b/docs/tutorial/quickstart.md index f72fc7dd..c3f95994 100644 --- a/docs/tutorial/quickstart.md +++ b/docs/tutorial/quickstart.md @@ -159,6 +159,33 @@ We can now access our API, both from the command-line, using tools like `curl`..          ]      } +Or using the [httpie][httpie], command line tool... + +    bash: http -a username:password http://127.0.0.1:8000/users/ + +    HTTP/1.1 200 OK +    ... +    { +        "count": 2, +        "next": null, +        "previous": null, +        "results": [ +            { +                "email": "admin@example.com", +                "groups": [], +                "url": "http://localhost:8000/users/1/", +                "username": "paul" +            }, +            { +                "email": "tom@example.com", +                "groups": [                ], +                "url": "http://127.0.0.1:8000/users/2/", +                "username": "tom" +            } +        ] +    } + +  Or directly through the browser...  ![Quick start image][image] @@ -173,3 +200,4 @@ If you want to get a more in depth understanding of how REST framework fits toge  [image]: ../img/quickstart.png  [tutorial]: 1-serialization.md  [guide]: ../#api-guide +[httpie]: https://github.com/jakubroztocil/httpie#installation | 
