Sha256: 16628b2604672f10fa65c605217166884d0df08d1d87b48af7dfb14f10e4ec0e

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

# Versioning APIs

## By URL

```ruby

class MyResourceV1 < Webmachine::Resource

end

class MyResourceV2 < Webmachine::Resource

end

App = Webmachine::Application.new do |app|
  app.routes do
    add ["api", "v1", "myresource"], MyResourceV1
    add ["api", "v2", "myresource"], MyResourceV2
  end
end

```

## By Content-Type

Note: if no Accept header is specified, then the first content type in the list will be chosen.

```ruby

class MyResource < Webmachine::Resource

  def content_types_provided
    [
      ["application/myapp.v2+json", :to_json_v2],
      ["application/myapp.v1+json", :to_json_v1]
    ]
  end

end

```

## By Header value

```ruby

class MyResourceV1 < Webmachine::Resource

end

class MyResourceV2 < Webmachine::Resource

end

class VersionGuard

  def initialize version
    @version = version
  end

  def call(request)
    request.headers['X-My-App-Version'] == @version
  end

end

App = Webmachine::Application.new do |app|
  app.routes do
    add ["api", "myresource"], VersionGuard.new("1"), MyResourceV1
    add ["api", "myresource"], VersionGuard.new("2"), MyResourceV2
  end
end

```

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
webmachine-2.0.1 documentation/versioning-apis.md
webmachine-2.0.0 documentation/versioning-apis.md
webmachine-2.0.0.beta documentation/versioning-apis.md
webmachine-1.6.0 documentation/versioning-apis.md
webmachine-1.5.0 documentation/versioning-apis.md
webmachine-1.4.0 documentation/versioning-apis.md
webmachine-1.3.1 documentation/versioning-apis.md
webmachine-1.3.0 documentation/versioning-apis.md