16

Click here to load reader

Curlin' for Docs

Embed Size (px)

DESCRIPTION

You may have docs for your API, but do you have an API for your docs? With RspecApiDocumentation and Raddocs, you can cURL for your documentation. SmartLogic's Eric Oestrich tells you how. Check out the slides, or read about it here: http://blog.smartlogicsolutions.com/2012/07/12/curlin-for-docs/

Citation preview

Page 1: Curlin' for Docs

cURLin' for DocsEric Oestrich@ericoestrich

oestri.ch

Page 2: Curlin' for Docs

Say what?$ curl -H "Accept: text/docs+plain"http://rad-example.herokuapp.com/orders

Page 3: Curlin' for Docs

ExampleGetting a list of orders------------------------

Parameters: * page - Current page of orders

Page 4: Curlin' for Docs

RequestRequest: GET /orders?page=1 Accept: application/json Content-Type: application/json Cookie: Host: example.org

page=1

Page 5: Curlin' for Docs

ResponseResponse: Status: 200 OK Cache-Control: max-age=0, private, must-revalidate Content-Length: 121 Content-Type: application/json; charset=utf-8 ETag: "6cd5831e98b0090b64672b5604d9eb2a" X-Runtime: 0.019010 X-UA-Compatible: IE=Edge,chrome=1

[{"email":"[email protected]","name":"Order 0","paid":true},{"email":"[email protected]","name":"Order 1","paid":true}]

Page 6: Curlin' for Docs

Neat-o, how do I get that?

Page 7: Curlin' for Docs

Install some gems

Gemfile

group :test do gem 'rspec_api_documentation' gem 'raddocs'end

Page 8: Curlin' for Docs

Write RAD tests

spec/acceptance/orders_spec.rb

resource "Orders" do get "/orders" do it "should ..." do ... end endend

Page 9: Curlin' for Docs

Configure the output formatsspec/spec_helper.rb

RspecApiDocumentation.configure do |config| config.formats = [:json, :combined_text]end

Page 10: Curlin' for Docs

Generate docs

$ rake docs:generate

Page 11: Curlin' for Docs

Mount Raddocs

config/routes.rb

Application.routes.draw do resources :orders

match "/docs" => Raddocs::App,:anchor => false

end

Page 12: Curlin' for Docs

Use Raddocs::Middlewareconfig/application.rb

module Example class Application < Rails::Application ... config.middleware.use "Raddocs::Middleware" ... endend

Page 13: Curlin' for Docs

cURL Away$ curl -H "Accept: text/docs+plain"

http://localhost/orders

Page 14: Curlin' for Docs

Demo

Page 15: Curlin' for Docs

Gems

● rspec_api_documentation○ http://github.com/zipmark/rspec_api_documentation

● raddocs○ http://github.com/oestrich/raddocs

Page 16: Curlin' for Docs

Questions?