cerebris / peeps Goto Github PK
View Code? Open in Web Editor NEWPeeps is a demo app for jsonapi-resources
Peeps is a demo app for jsonapi-resources
I'm struggling to figure out how to write tests for JSON API resources. Any suggestions?
Following along with a basic tutorial for jsonapi-resources, I got stuck on the Ember.js side when I tried to load data:
[Report Only] Refused to connect to 'http://localhost:3000/articles/1/author' because it violates the following Content Security Policy directive: "connect-src 'self' ws://localhost:49152 ws://0.0.0.0:49152 http://0.0.0.0:4200/csp-report".
XMLHttpRequest cannot load http://localhost:3000/articles/2/author. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
Would make sense to add a demo of utilizing https://github.com/cyu/rack-cors (or similar) to configure the Rails side of things. If this is in the demo, I can't find it.
Might even be pretty sweet to include rack-cors as a dependency and provide a reasonable default setup.
I tried recreating Peeps as the tutorial suggests in README.md with only one (1) difference: using UUIDs instead of Int Primary keys.
I was able to go to the point of creating items while testing the APIs.
This is where I am currently stuck; I am unable to create a phone number.
It keeps giving a response that the field value is invalid.
Code: 103
Status: 400"
Detail: "bc846a91-e442-4a12-aa4a-7f218e85e1f4 is not a valid value for id."
SIDE NOTE:
I even created a second contact and tried using his UUID instead but to no avail.
Hello!
I followed along with the tutorial and believe I have run into an issue.
The third to last step lists the curl command as follows: curl -i -H "Accept: application/vnd.api+json" "http://localhost:3000/contacts?include=phone-numbers"
This is supposed to result in a json reply that contains direct phone number information. However, running that code results in a linkage of "[]":
{"data":[{"id":"1","name-first":"John","name-last":"Doe","email":"[email protected]","twitter":null,"type":"contacts","links":{"self":"http://localhost:3000/contacts/1","phone-numbers":{"self":"http://localhost:3000/contacts/1/links/phone-numbers","related":"http://localhost:3000/contacts/1/phone-numbers","linkage":[]}}}]}
The second to last step lists the following curl command: curl -i -H "Accept: application/vnd.api+json" "http://localhost:3000/contacts?include=phone-numbers&fields%5Bcontacts%5D=name-first,name-last&fields%5Bphone-numbers%5D=name"
This correctly displays the fields, but the phone number is nowhere to be found:
{"data":[{"name-first":"John","name-last":"Doe","type":"contacts","id":"1","links":{"self":"http://localhost:3000/contacts/1"}}]}
Retrieving the full list of phone numbers results in the following:
{"data":[{"id":"1","name":"home","phone-number":"(513)377-7911","type":"phone_numbers","links":{"self":"http://localhost:3000/phone-numbers/1","contact":{"self":"http://localhost:3000/phone-numbers/1/links/contact","related":"http://localhost:3000/phone-numbers/1/contact","linkage":null}}}]}
In all cases, linkage and directly embedding link information appears to be broken. Have I done something wrong?
I followed your instructions exactly and yet I'm getting an error when trying to create a new contact. Please recognize I'm a complete novice. I'm running on Windows 10.
When I run the command:
curl -i --trace-ascii debugdump.txt -H "Accept: application/vnd.api+json" -H 'Content-Type:application/vnd.api+json' -X POST -d '{"data": {"type":"contacts", "attributes":{"name-first":"John", "name-last":"Doe", "email":"[email protected]"}}}' http://localhost:3000/contacts
I get the following:
curl: (3) [globbing] unmatched brace in column 1
curl: (3) [globbing] unmatched brace in column 12
Note: Unnecessary use of -X or --request, POST is already inferred.
curl: (3) Illegal port number
curl: (3) [globbing] unmatched close brace/bracket in column 27
Note: Unnecessary use of -X or --request, POST is already inferred.
HTTP/1.1 415 Unsupported Media Type
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Type: application/vnd.api+json; charset=utf-8
Cache-Control: no-cache
X-Request-Id: e9cbc755-a03c-49cd-be92-2c45e00e7aea
X-Runtime: 0.049923
Transfer-Encoding: chunked
{"errors":[{"title":"Unsupported media type","detail":"All requests that create or update must use the 'application/vnd.api+json' Content-Type. This request specified 'application/x-www-form-urlencoded'.","code":"415","status":"415"}]}
Here is my Gemfile:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
gem 'rails', '> 5.0.1'> 0.18'
gem 'pg', '
gem 'puma', '> 3.0'> 5.0'
gem 'sass-rails', '
gem 'uglifier', '>= 1.3.0'
gem 'jbuilder', '~> 2.5'
gem 'jsonapi-resources'
gem 'thor', '0.19.1'
group :development, :test do
gem 'byebug', platform: :mri
end
group :development do
gem 'web-console', '>= 3.3.0'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Here is my debug file from running curl:
== Info: Rebuilt URL to: name-last:Doe,/
== Info: Illegal port number
== Info: Closing connection -1
== Info: Trying ::1...
== Info: TCP_NODELAY set
== Info: Trying 127.0.0.1...
== Info: TCP_NODELAY set
== Info: Connected to localhost (127.0.0.1) port 3000 (#0)
=> Send header, 217 bytes (0xd9)
0000: POST /contacts HTTP/1.1
0019: Host: localhost:3000
002f: User-Agent: curl/7.52.1
0048: Accept: application/vnd.api+json
006a: 'Content-Type:application/vnd.api+json'
0093: Content-Length: 7
00a6: Content-Type: application/x-www-form-urlencoded
00d7:
=> Send data, 7 bytes (0x7)
0000: '{data:
== Info: upload completely sent off: 7 out of 7 bytes
<= Recv header, 37 bytes (0x25)
0000: HTTP/1.1 415 Unsupported Media Type
<= Recv header, 29 bytes (0x1d)
0000: X-Frame-Options: SAMEORIGIN
<= Recv header, 33 bytes (0x21)
0000: X-XSS-Protection: 1; mode=block
<= Recv header, 33 bytes (0x21)
0000: X-Content-Type-Options: nosniff
<= Recv header, 55 bytes (0x37)
0000: Content-Type: application/vnd.api+json; charset=utf-8
<= Recv header, 25 bytes (0x19)
0000: Cache-Control: no-cache
<= Recv header, 52 bytes (0x34)
0000: X-Request-Id: f1367df0-abdf-4571-9490-438d9731c3f2
<= Recv header, 21 bytes (0x15)
0000: X-Runtime: 0.035518
<= Recv header, 28 bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 246 bytes (0xf6)
0000: eb
0004: {"errors":[{"title":"Unsupported media type","detail":"All reque
0044: sts that create or update must use the 'application/vnd.api+json
0084: ' Content-Type. This request specified 'application/x-www-form-u
00c4: rlencoded'.","code":"415","status":"415"}]}
00f1: 0
00f4:
== Info: Curl_http_done: called premature == 0
== Info: Connection #0 to host localhost left intact
Hi, I have created my Resources files but I'm missing one part (still understanding how this part works)
I have a resources that PUTs a URL into my database using the following sentence =>
curl -i -H "Accept: application/vnd.api+json" -H 'Content-Type:application/vnd.api+json' -X POST -d '{"data": {"type":"urls", "attributes":{"url":"http://www.myurl.com"}}}' http://localhost:3001/api/v1/urls
My question is:
How do I allow my controller (or resource) to parse the HTML and extract some tags from it?
I created the following method on my urls_controller just to test if it works:
def create
@url = Url.new(params[:data])
parse_url = Nokogiri::HTML(open(params[:data][:attributes][:url].to_s))
puts parse_url.class # => Nokogiri::HTML::Document
@url.save
end
but my console shows this error
ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):
app/controllers/api/v1/urls_controller.rb:7:in `create'
and the URL is not printed on my console nor the url is saved on my urls table.
Any suggestion?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.