mirror of
https://github.com/kennethreitz-archive/django-piston-xauth.git
synced 2026-06-21 07:50:58 +00:00
70 lines
2.3 KiB
Plaintext
70 lines
2.3 KiB
Plaintext
This is a bare-skeleton Django application which demonstrates how you can
|
|
add an API to your own applications.
|
|
|
|
It's a simple blog application, with a "Blogpost" model, with an API on top
|
|
of it. It has a fixture which contains a sample user (used as author and
|
|
for auth) and a couple of posts.
|
|
|
|
You can get started like so:
|
|
|
|
$ python manage.py syncdb (answer "no" when it asks for superuser creation)
|
|
$ python manage.py runserver
|
|
|
|
Now, the test user has authentication info:
|
|
|
|
Username: testuser
|
|
Password: foobar
|
|
|
|
The API is accessible via '/api/posts'. You can try it with curl:
|
|
|
|
$ curl -u testuser:foobar "http://127.0.0.1:8000/api/posts/?format=yaml"
|
|
- author: {absolute_uri: /users/testuser/, username: testuser}
|
|
content: This is just a sample post.
|
|
content_length: 27
|
|
created_on: 2009-04-27 04:55:23
|
|
title: Sample blogpost 1
|
|
- author: {absolute_uri: /users/testuser/, username: testuser}
|
|
content: This is yet another sample post.
|
|
content_length: 32
|
|
created_on: 2009-04-27 04:55:33
|
|
title: Another sample post
|
|
|
|
That's an authorized request, and the user gets back privileged information.
|
|
|
|
Anonymously:
|
|
|
|
$ curl "http://127.0.0.1:8000/api/posts/?format=yaml"
|
|
- {content: This is just a sample post., created_on: !!timestamp '2009-04-27 04:55:23',
|
|
title: Sample blogpost 1}
|
|
- {content: This is yet another sample post., created_on: !!timestamp '2009-04-27
|
|
04:55:33', title: Another sample post}
|
|
|
|
Creating blog posts is also easy:
|
|
|
|
$ curl -u testuser:foobar "http://127.0.0.1:8000/api/posts/?format=yaml" -F "title=Testing again" -F "content=Foobar"
|
|
author: {absolute_uri: /users/testuser/, username: testuser}
|
|
content: Foobar
|
|
content_length: 6
|
|
created_on: 2009-04-27 05:53:38.138215
|
|
title: Testing again
|
|
|
|
(The data returned is the blog post it created.)
|
|
|
|
Anonymously that's not allowed:
|
|
|
|
$ curl -v "http://127.0.0.1:8000/api/posts/?format=yaml" -F "title=Testing again" -F "content=Foobar"
|
|
* About to connect() to 127.0.0.1 port 8000 (#0)
|
|
* Trying 127.0.0.1... connected
|
|
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
|
|
> POST /api/posts/?format=yaml HTTP/1.1
|
|
[snip]
|
|
>
|
|
< HTTP/1.0 405 METHOD NOT ALLOWED
|
|
|
|
This is because by default, AnonymousBaseHandler has 'allow_methods' only set to 'GET'.
|
|
|
|
You can check out how this is done in the 'api' directory.
|
|
|
|
Also, there's plenty of documentation on http://bitbucket.org/jespern/django-piston/
|
|
|
|
Have fun! |