Elixir & apis - presentation at ElixirConf 2016
-
Upload
victoria-wagman -
Category
Technology
-
view
38 -
download
1
Transcript of Elixir & apis - presentation at ElixirConf 2016
![Page 2: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/2.jpg)
Victoria * Developer at 46elks * Elixir * EL Passion
![Page 3: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/3.jpg)
APIsweb
![Page 4: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/4.jpg)
[ > ] ”How to design a good API and why it matters”
![Page 5: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/5.jpg)
APIsweb
HTTP
![Page 6: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/6.jpg)
![Page 7: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/7.jpg)
HTTP request
![Page 8: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/8.jpg)
HTTP verbs
aka request methods
![Page 9: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/9.jpg)
Ask for Send Update Remove
![Page 10: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/10.jpg)
Ask for Send Update Remove
GET POST PUT DELETE
![Page 11: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/11.jpg)
![Page 12: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/12.jpg)
![Page 13: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/13.jpg)
cURL - Examplecurl -X POST \ -u <API Username>:<API Password> \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "from=VILLE" \ -d ”message=Hej%20Kul” \ -d "to=+358503672181" \ 'https://api.46elks.com/a1/SMS'
Types
Auth Request Content Type
Request Data
EndpointService
Secure HTTP Socket
![Page 14: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/14.jpg)
So where does one start?
![Page 15: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/15.jpg)
Learn about the API • URL/base url • Endpoint(s) • Response format
![Page 16: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/16.jpg)
http://supernavet.skolverket.se/SusaNavExport/EmilExporter
XML
![Page 17: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/17.jpg)
<response> <mobilenumber>+46766861004</mobilenumber> <displayname>Victoria</displayname> <currency>SEK</currency> … </response>
XML
![Page 18: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/18.jpg)
[{ "mobilenumber": "+46766861004", "displayname": "Victoria", "costtype": "trial", "id": "u471962a39cc22c97415c84be437", "currency": "SEK", "trialactivated": "2016-10-23T15:37", "balance": 200000, "email": "[email protected]" }, { … } ]
json
![Page 19: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/19.jpg)
mix new
![Page 20: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/20.jpg)
mix new apifrenzy
![Page 21: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/21.jpg)
mix new apifrenzy cd apifrenzy
:e /lib/apifrenzy/fetcher.ex
![Page 22: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/22.jpg)
![Page 23: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/23.jpg)
![Page 24: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/24.jpg)
cd apifrenzy iex -S mix
![Page 25: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/25.jpg)
cd apifrenzy iex -S mix Apifrenzy.Fetcher.fetch_educational_resources
![Page 26: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/26.jpg)
cd apifrenzy iex -S mix Apifrenzy.Fetcher.fetch_educational_resources
Fetching educational resources from: http://supernavet.skolverket.se/SusaNavExport/EmilExporter
:ok
![Page 27: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/27.jpg)
Can I haz HTTP requests in Elixir plz?
![Page 28: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/28.jpg)
”Elixir http”
![Page 29: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/29.jpg)
Also a way to find resources by category: http://toolbox.elixir.pm/ by Henrik Nyh https://github.com/henrik/toolbox
![Page 30: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/30.jpg)
![Page 31: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/31.jpg)
![Page 32: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/32.jpg)
![Page 33: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/33.jpg)
![Page 34: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/34.jpg)
HTTPotion. HTTPoison! Tesla?
![Page 35: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/35.jpg)
![Page 36: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/36.jpg)
![Page 37: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/37.jpg)
![Page 38: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/38.jpg)
![Page 39: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/39.jpg)
mix.exs
![Page 40: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/40.jpg)
mix.exs
![Page 41: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/41.jpg)
mix deps.get
![Page 42: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/42.jpg)
![Page 43: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/43.jpg)
mix.exs
![Page 44: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/44.jpg)
![Page 45: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/45.jpg)
cd apifrenzy iex -S mix
![Page 46: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/46.jpg)
cd apifrenzy iex -S mix Apifrenzy.Fetcher.fetch_educational_resources
![Page 47: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/47.jpg)
![Page 48: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/48.jpg)
![Page 49: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/49.jpg)
![Page 50: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/50.jpg)
Look at docs.. (documentation)
![Page 51: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/51.jpg)
RTFM
![Page 52: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/52.jpg)
![Page 53: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/53.jpg)
HEX DOCS
![Page 54: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/54.jpg)
![Page 55: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/55.jpg)
![Page 56: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/56.jpg)
![Page 57: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/57.jpg)
![Page 58: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/58.jpg)
![Page 59: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/59.jpg)
![Page 60: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/60.jpg)
![Page 61: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/61.jpg)
![Page 62: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/62.jpg)
![Page 63: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/63.jpg)
![Page 64: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/64.jpg)
![Page 65: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/65.jpg)
![Page 66: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/66.jpg)
![Page 67: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/67.jpg)
![Page 68: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/68.jpg)
OK Nice!
![Page 69: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/69.jpg)
OK Nice!
![Page 70: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/70.jpg)
![Page 71: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/71.jpg)
status code
![Page 72: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/72.jpg)
Status code200 - OK404 - NOT found
![Page 73: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/73.jpg)
1xx Informational 2xx Success 3xx Redirection 4xx Client Error 5xx Server Error
![Page 74: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/74.jpg)
100 Keep sending 200 Success 301 Move to a different url 401 Unauthorized 500 Server Error - ex: crashed whilst trying.
![Page 75: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/75.jpg)
” http status codes cats ”
![Page 76: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/76.jpg)
https://http.cat/ https://http.cat/200
![Page 77: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/77.jpg)
![Page 78: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/78.jpg)
![Page 79: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/79.jpg)
![Page 80: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/80.jpg)
![Page 81: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/81.jpg)
![Page 82: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/82.jpg)
Let’s!
![Page 83: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/83.jpg)
Self-service setup
46elks.com/signup
![Page 84: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/84.jpg)
![Page 85: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/85.jpg)
![Page 86: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/86.jpg)
![Page 87: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/87.jpg)
workshop
![Page 88: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/88.jpg)
Gothchas & ahaaaa
![Page 89: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/89.jpg)
URI encoded x-www-form-urlencoded
json
![Page 90: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/90.jpg)
![Page 91: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/91.jpg)
![Page 92: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/92.jpg)
![Page 93: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/93.jpg)
Browsers caching
GET response
![Page 94: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/94.jpg)
Keep an eye on repository source code pages. What is the activity?
Stable? Stale? Community there?
![Page 95: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/95.jpg)
Version number. Poison is at 0.10 … Use at your own risk.
I’d say it depends on your confidence and skills, are there still challenges that simply haven’t been solved yet. You can always check pull requests, and forks, and of course ”reported issues” to see
what issues people have.
![Page 96: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/96.jpg)
graphql.org
![Page 97: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/97.jpg)
![Page 98: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/98.jpg)
Free popup 1on1 teaching/ mentoring, workshops/presentations for women in Warszawa [email protected]
![Page 99: Elixir & apis - presentation at ElixirConf 2016](https://reader033.fdocuments.us/reader033/viewer/2022052705/5870719c1a28ab48378b7ac5/html5/thumbnails/99.jpg)
TYAvailable as mentor for free to women in tech { Warszaw in December}Victoria [email protected]
46elks.pl open data