Skip to content

Commit 4506696

Browse files
committed
update api creation resources
1 parent a353776 commit 4506696

File tree

4 files changed

+49
-6
lines changed

4 files changed

+49
-6
lines changed

content/pages/04-web-development/44-web-apis.markdown

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,20 @@ on the number's page on Twilio as shown below.
6666
is a well-written overview of the REpresentational State Transfer (REST)
6767
architecture proposed by Roy Fielding in his dissertation.
6868

69+
* The list of [public APIs](https://github.com/toddmotto/public-apis) in
70+
this Git repository is incredible and worth examining if you are looking
71+
to find data sources for your projects.
72+
6973
* [GET PUT POST](https://medium.com/get-put-post) is a newsletter just
7074
about APIs. Past issues have included interviews with the developers
7175
behind Stripe, Dropbox and Coinbase.
7276

77+
* [Designing robust and predictable APIs with idempotency](https://stripe.com/blog/idempotency)
78+
discusses designing APIs for *idempotency*, which means guaranteeing that
79+
side effects only occur once. This topic is especially important with web
80+
APIs because network connections are and will always be unreliable so you
81+
need to build knowing network problems will happen.
82+
7383
* [What RESTful actually means](https://codewords.recurse.com/issues/five/what-restful-actually-means)
7484
does a fantastic job of laying out the REST principles in plain language
7585
terms while giving some history on how they came to be.
@@ -87,6 +97,7 @@ on the number's page on Twilio as shown below.
8797
that are new in 2015.
8898

8999

100+
90101
## APIs learning checklist
91102
1. Learn the API concepts of machine-to-machine communication with JSON and
92103
XML, endpoints and webhooks.

content/pages/04-web-development/48-api-creation.markdown

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ applications through machine-to-machine communication.
5757
* [Pycnic](http://pycnic.nullism.com) is a JSON-API-only framework designed
5858
with REST in mind.
5959

60+
6061
## API testing projects
6162
Building, running and maintaining APIs requires as much effort as building,
6263
running and maintaining a web application. API testing frameworks are the
@@ -65,6 +66,8 @@ equivalent of browser testing in the web application world.
6566
* [zato-apitest](https://github.com/zatosource/zato-apitest) invokes HTTP
6667
APIs and provides hooks for running through other testing frameworks.
6768

69+
* [Tavern](https://taverntesting.github.io/) is a pytest plugin for
70+
automated API testing.
6871

6972

7073
### Hosted API testing services
@@ -91,6 +94,10 @@ equivalent of browser testing in the web application world.
9194
difficult problems so keep an eye on server utilization and endpoint calls
9295
growth to separate legitimate from illegitimate traffic.
9396

97+
* [API versioning](https://stripe.com/blog/api-versioning) is a wonderful
98+
article on the tradeoffs between including an API version in the URL
99+
compared to other common ways to version APIs.
100+
94101
* [API Doc JS](http://apidocjs.com/) allows a developer to embed markup
95102
in their documentation that will generate a site based on the endpoints
96103
available in the API.
@@ -169,11 +176,9 @@ equivalent of browser testing in the web application world.
169176
into what makes a good API framework and which one you should currently
170177
choose for Django.
171178

172-
* [Create a REST API in Minutes with Pyramid and Ramses](https://realpython.com/blog/python/create-a-rest-api-in-minutes-with-pyramid-and-ramses/)
173-
is a thorough tutorial from start to finish that uses the
174-
[Pyramid](/pyramid.html) web framework along with
175-
[Ramses](https://pypi.org/project/ramses/), a library that uses
176-
YAML files to generate a RESTful API.
179+
* [Creating Web APIs with Python and Flask](https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask)
180+
is a free book on building APIs with [Flask](/flask.html) as the
181+
core [web framework](/web-framework.html).
177182

178183
* [RESTful web services with Python](http://www.slideshare.net/Solution4Future/python-restful-webservices-with-python-flask-and-django-solutions)
179184
is an interesting overview of the Python API frameworks space.
@@ -189,17 +194,30 @@ equivalent of browser testing in the web application world.
189194
subscribing to updates via a REST interface. Both REST hooks and webhooks
190195
are far more efficient than polling for updates and notifications.
191196

197+
* [Rate limiters](https://stripe.com/blog/rate-limiters) provides a great
198+
overview of how limiting access in both the number of requests per
199+
second as well as the number of concurrent open connections can help
200+
keep your API alive during times of heavy traffic.
201+
192202
* Serialization is common for transforming objects into web API JSON
193203
results. One company found the serialization performance of Django REST
194204
framework was lacking so they created
195205
[Serpy](https://github.com/clarkduvall/serpy) and
196206
[wrote a blog post with the results of its performance](https://engineering.betterworks.com/2015/09/04/ditching-django-rest-framework-serializers-for-serpy/).
197207

208+
* [Designing a Web API](http://restlet.com/company/blog/2015/03/16/api-design-designing-a-web-api/)
209+
gives a detailed walkthrough of concepts and design decisions you need
210+
to make when building an API.
211+
198212
* Microsoft's
199213
[REST API Guidelines](https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md)
200214
are a detailed set of considerations for when you are building your own
201215
APIs that you want to be easily-consumable by other developers.
202216

217+
* [Designing Good Static REST API Documentation](https://www.moesif.com/blog/technical/documentation/Designing-Good-Static-REST-API-Documentation/)
218+
is about documentation not APIs themselves, but it covers a critical topic
219+
if you want your API to succeed: how to use the damn thing.
220+
203221
* [Building better API docs](https://engineering.gosquared.com/building-better-api-docs)
204222
shows how Square used Swagger with React to create more helpful docs.
205223

content/pages/05-deployment/19-nginx.markdown

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,17 @@ several years.
9494
has a great chapter devoted to why Nginx is built to scale a certain way
9595
and lessons learned along the development journey.
9696

97+
* [nginx-quick-reference](https://github.com/trimstray/nginx-quick-reference)
98+
provides fantastic tactical advice for improving Nginx performance,
99+
handling security and many other critical aspects.
100+
97101
* [Inside Nginx: How we designed for performance and scale](http://nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/)
98102
is a blog post from the developers behind Nginx on why they believe their
99103
architecture model is more performant and scalable than other approaches
100104
used to build web servers.
101105

102106
* [Test-driving web server configuration](https://gdstechnology.blog.gov.uk/2015/03/25/test-driving-web-server-configuration/)
103-
is a good story for how to iteratively apply configuration changes, such
107+
tells a good story for how to iteratively apply configuration changes, such
104108
as routing traffic to [Piwik](http://piwik.org/) for
105109
[web analytics](/web-analytics.html), reverse proxying to backend
106110
application servers and terminately TLS connections appropriately.

content/pages/05-deployment/33-ansible.markdown

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,20 @@ be able to structure your playbooks:
4848
is an incredibly detailed look at how one developer installs and run
4949
Ansible.
5050

51+
* This retrospective from a developer on
52+
[lessons from using Ansible exclusively for 2 years](https://blog.serverdensity.com/what-ive-learnt-from-using-ansible-exclusively-for-2-years/)
53+
explains his rationale for choosing Ansible over Puppet and Chef,
54+
then goes through several use cases and best practices learned over
55+
time with the tool.
56+
5157
* [Using Ansible for deploying serverless applications](https://opensource.com/article/17/8/ansible-serverless-applications)
5258
provides a short overview with an example playbook how Ansible can also
5359
be useful for configuring [serverless](/serverless.html) applications.
5460

61+
* [Painless Immutable Infrastructure with Ansible and AWS](http://radify.io/blog/painless-immutable-infrastructure-with-ansible-and-aws/)
62+
covers the steps needed for the unique authentication complexities
63+
that arise from using Amazon Web Services for your infrastructure.
64+
5565
* [DevOps from Scratch, Part 1: Vagrant & Ansible](https://www.kevinlondon.com/2016/09/19/devops-from-scratch-pt-1.html)
5666

5767
* [Ansible: Post-Install Setup](https://valdhaus.co/writings/ansible-post-install/)

0 commit comments

Comments
 (0)