Comments (7)
There’s a non documented feature in Her that removes any parameters matching /^_/
. I added a new line in the main HTTP request wrapper that allows you to pass a custom _headers
variable in all HTTP/ORM methods, like so:
User.all(:type => "regular", :_headers => { "X-Page" => 2 })
This will call GET /users?type=regular
with a X-Page: 2
HTTP header. Is this something you’d like to see in the library? I plan on adding it in 0.2.6.
Thanks for the request!
from her.
Awesome! Thank you for the fast response!
This is perfect for my needs on the request side, is there any way to access the response headers? The only thing missing with this change in place is a way to pull something like X-Total-Items: 500 out of the response.
Cheers!
from her.
Unfortunately, there's currently no way for an instance of a model to access the response data, other than the actual resource data.
Currently, the parser middleware must return a hash with three keys (example), data
, metadata
and errors
— but only the data
one is used by the constructor (because of lines like these that are present in a few places).
In the meantime, you could create your own parser middleware (they're very simple, check out the default SecondLevelParseJSON
and FirstLevelParseJSON
) that store the value env[:headers]["X-Total-Items"]
in a variable that you could access later from your model.
Handling the metadata
and errors
keys is in the works though, I just have to come up with a backward compatible way of using them easily.
Thanks!
from her.
Gotcha, I'll come up with a way to pass that data around, thank you for the great info.
One small side problem I ran into today that perhaps should be a separate issue:
Currently the default JSON parse middleware doesn't set the 'Accept' header in the request to 'application/json'
. It comes out as '*/*'
this was easy to change with small bit of middleware but it would be a nice to have as a default set by the parser.
Cheers!
from her.
Alright, I'll look into it. Thank you for your help! :)
from her.
Currently the default JSON parse middleware doesn't set the 'Accept' header in the request to 'application/json'. It comes out as '/' this was easy to change with small bit of middleware but it would be a nice to have as a default set by the parser.
Actually, I thought about it and this is the kind of thing that Faraday lets you do through middleware:
class Foo < Faraday::Middleware
def call(env)
env[:request_headers]["Accept"] = "application/json"
@app.call(env)
end
end
Her::API.setup :url => "https://api.example.com" do |connection|
connection.use Foo
connection.use Faraday::Request::UrlEncoded
connection.use Her::Middleware::FirstLevelParseJSON
connection.use Faraday::Adapter::NetHttp
end
from her.
That is exactly what I did to get around it. I guess i was expecting to be
set by default by the JSON middleware as the JSON middleware is expecting
JSON so to me it would make sense that it would set the accept header as
such.
On Tue, Jun 26, 2012 at 6:55 PM, Rémi Prévost <
[email protected]
wrote:
Currently the default JSON parse middleware doesn't set the 'Accept'
header in the request to 'application/json'. It comes out as '/' this was
easy to change with small bit of middleware but it would be a nice to have
as a default set by the parser.Actually, I thought about it and this is the kind of thing that Faraday
lets you do through middleware:class Foo < Faraday::Middleware def call(env) env[:request_headers]["Accept"] = "application/json" @app.call(env) end end Her::API.setup :url => "https://api.example.com" do |connection| connection.use Foo connection.use Faraday::Request::UrlEncoded connection.use Her::Middleware::FirstLevelParseJSON connection.use Faraday::Adapter::NetHttp end
Reply to this email directly or view it on GitHub:
#16 (comment)
from her.
Related Issues (20)
- path_prefix option is not used when belongs_to association is set. HOT 5
- add ability to wrap "where" clause HOT 4
- Support for first, limit, group and order HOT 6
- Support for update_attributes missing? HOT 6
- Support for association extensions HOT 1
- undefined method `map' for nil:NilClass for association HOT 6
- Class-level response parsing? HOT 1
- Scopes on JsonApi model
- Find or Create by ID HOT 2
- Have we considered making this gem more SEO friendly? HOT 4
- Attributes don't play nicely with ActiveModel::Dirty in Rails 6
- Safe Navigation Operator &. don't works on nil objects
- I would like to have find_by! in order to raise an exception instead of a nil HOT 1
- HashWithIndifferentUsage is slow, and requires large ActiveSupport dependency
- ruby 2.7, rails 6.0 and faraday 1.0 HOT 3
- Release version 1.1.1 HOT 1
- her-rb.org website inaccessible. HOT 1
- Organizing a fork of her HOT 1
- Execute rescue_from plus her? HOT 1
- Model.all returns empty array, but response has data HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from her.