-
Notifications
You must be signed in to change notification settings - Fork 21
Home
Mechanize is a stateful REST client with support for HTML and also JSON interactions. Mechanize has a long history, from perl to python and ruby. See Other Implementations for links.
Hypermedia is based on having client state and stateless servers. What does a stateful-client and stateless-server look like?
- If you are reading a book, it's your job to remember what page you are on.
- You are the client, and your state is the page number you're on.
- The book is the server, and in a digital world many, many clients can be reading the same book at different pages.
The most basic and fundamental RESTful interaction style is:
- First, GET one or more resources.
- Then POST
Specifically, the clients to a RESTful service should never be hard coded to a specific URI and parameter set. This is brittle and prevents evolutionary change and upgrade.
The Rails CSRF forgery countermeasures are a good example of why GET-then-POST is needed. Another example is the server changes to allow new parameters and then new GET responses can include default values for these new parameters. See the GET-then-POST page for more details.
Most RESTful Web Services use either JSON or XML for the data format. This is great, but neither of these has functional hypermedia support. (XML does have some standard in this area, but none that are popular.) See the JSON Hypermedia page for a description of how Mechanize is supporting this space.
- See OAuth Example for how to authenticate.
Here are the directions I use to PublishToMavenRepository, so I don't forget.
Here are some References to getting this project setup.