Jett Durham
@thejettdurham
Lead Software Developer
full stack and then some
Your Application
Web Server
Database
Request
Response
HTTP Request Handling
Authentication
Authorization
Request Parsing
Request Validation
Database Communication
Database Response Handling
HTTP Response Building
Your Application
Your Code
Data Handling Library
Object Relational Mapper
Authentication Framework
Application Framework
Active Record cut my lines of code in half!
oAuth lets me stop worrying about my API security!
Play Framework makes writing web apps so easy!
I updated Active Record and the API broke. How to fix?
The last version of oAuth had a security flaw that leaked our customer emails to spambots
Play Framework updated again, time for another rewrite! And updating to Java 8. And updating to Gradle 2.8. And...
Mark's Social Network
Gordon's Coffee Shop
David's DVD Store
Larry's Search Engine
Jeff's Warehouse
Daniel's Streaming Service
GET
POST
PATCH
DELETE
SELECT
INSERT
UPDATE
DELETE
Your Application
Web Server
Database
Request
Response
10.0.3.2
:5432
/dvdrental
:3000
{
"user": "seth",
"role": "administrator"
}
{
"user": "seth",
"role": "administrator"
}
Michael Bluth
Gob Bluth
George Michael Bluth
John Q
0 | michael | develop... | 3 | 56500 | ... |
1 | john | analyst | 6 | 47900 | ... |
user_id | name | job_title | dept_id | salary | notes |
---|
employee |
---|
0 | michael | develop... | 3 | 56500 | ... |
1 | john | analyst | 6 | 47900 | ... |
user_id | name | job_title | dept_id | salary | notes |
---|
employee |
---|
-- SAMPLE FUNCTION
CREATE FUNCTION tf1 (acct_no integer, debit numeric)
RETURNS numeric AS $$
UPDATE bank
SET balance = balance - $2
WHERE accountno = $1
RETURNING balance;
$$ LANGUAGE SQL;
-- SAMPLE TRIGGER
CREATE TRIGGER emp_stamp
BEFORE INSERT OR UPDATE ON employees
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
https://
api.twitter.com
/1.1
/users/suggestions.json
?id=foo
KEY | VALUE |
---|---|
Authorization | ... |
Content-Type | application/json |
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
KEY | VALUE |
---|---|
Connection | keep-alive |
Content-Type | application/json |
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
{
"Count": 1670,
"Username": "jdurham",
"IsPresent": true,
"JobTitles": [
"Software Developer",
"Software Engineer",
"Sysadmin",
"Supervisor"
],
"Addresses": [
{
"Name": "home",
"Street": "123 Main St.",
"City": "Wichita",
"State": "Kansas",
"Zip": 67212
},
{
"Name": "work",
"Street": "266 N Main St.",
"City": "Wichita",
"State": "Kansas",
"Zip": 67202
}
]
}