From 187147113f0569cc51ac64f9319d5d55ce816202 Mon Sep 17 00:00:00 2001 From: Andrew Tomaka Date: Mon, 12 Oct 2015 17:11:41 -0400 Subject: [PATCH] More work --- resources/api.png | Bin 0 -> 30715 bytes slides/a-restful-example.md | 18 ++++++++++++------ slides/api-documentation.md | 3 +++ slides/index.md | 2 ++ slides/list.json | 2 ++ slides/make-it-restful.md | 2 ++ slides/rest-on-the-web.md | 4 +++- slides/restful-responses.md | 12 ++++++++++++ slides/sample-code.md | 1 + 9 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 resources/api.png create mode 100644 slides/api-documentation.md create mode 100644 slides/restful-responses.md create mode 100644 slides/sample-code.md diff --git a/resources/api.png b/resources/api.png new file mode 100644 index 0000000000000000000000000000000000000000..034bbde9ed570cb864a62b3583321fbe929f0a6b GIT binary patch literal 30715 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

lAhHR$-o@T3c6}INRmZd_n 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 Tomaka / [@atomaka](https://twitter.com/atomaka) diff --git a/slides/list.json b/slides/list.json index d691e40..ef8c295 100644 --- a/slides/list.json +++ b/slides/list.json @@ -1,10 +1,12 @@ [ "index.md", "what-is-an-api.md", + "api-documentation.md", "make-it-restful.md", "rest-constraints.md", "rest-on-the-web.md", "a-restful-example.md", + "sample-code.md", "resources.md", "other-talks.md" ] diff --git a/slides/make-it-restful.md b/slides/make-it-restful.md index 449c423..b95b8a1 100644 --- a/slides/make-it-restful.md +++ b/slides/make-it-restful.md @@ -3,3 +3,5 @@ * **RE**presentational * **S**tate * **T**ransfer + +Constraints to create consistent APIs diff --git a/slides/rest-on-the-web.md b/slides/rest-on-the-web.md index b43e0e6..b2952b1 100644 --- a/slides/rest-on-the-web.md +++ b/slides/rest-on-the-web.md @@ -4,6 +4,8 @@ * Pick a data type (JSON, XML, Atom, etc) * Use standard HTTP methods * GET, PUT, POST, DELETE, (and PATCH) +* Use standard HTTP response codes + * 200 OK, 204 No Content, 404 Not Found -notes: +note: diff --git a/slides/restful-responses.md b/slides/restful-responses.md new file mode 100644 index 0000000..3a3f025 --- /dev/null +++ b/slides/restful-responses.md @@ -0,0 +1,12 @@ +## HTTP Responses + +* 200 OK: Request succeeded and information returned +* 204 No Content: Request succeeded but no information returned +* 404 Not Found: Resource not found +* 422 Unprocessable Entity: Incorrect semantics + +[And many others](http://www.restapitutorial.com/httpstatuscodes.html) + +note: + +422 ex: strong params violation diff --git a/slides/sample-code.md b/slides/sample-code.md new file mode 100644 index 0000000..023c37a --- /dev/null +++ b/slides/sample-code.md @@ -0,0 +1 @@ +## Sample Code