In database terminology primary key refers to the column in a table that's intended to be the primary way of identifying rows. Each table must have exactly one, and it needs to be unique. This is usually some kind of a unique identifier associated with objects presented by the table, or if such an identifier doesn't exist simply a running ID number (which is incremented automatically).
Main material: What you must have a look!¶
Course Slides¶
Lecture videos¶
Alternatively you can use the lecture topic "checklists" below and study up on the topics from other sources.
Lecture 1 Content Checklist¶
- Web services and APIs (chapter 1 in course book)
- What is the World Wide Web
- Databases - definition and key concepts
- HTTP protocol basics - HTTP methods in particular
- Data serialization (HTML, JSON, XML)
Lecture 2 Content Checklist¶
- RESTful web API (chapter 2 in course book)
- Resource oriented architecture (ROA) (chapter 3 in course book)
- 4 key concepts: addressability, uniform interface, statelessness, connectedness (chapter 1 in course book)
- Hypermedia, hypermdia as the engine of application state (HATEOAS) (chapter 4 in course book)
- Semantic gap (chapter 5 in course book)
- Hypermedia profiles (chapter 8 in course book)
- Hypermedia API design (chapter 9 in course book)
BibliographyMain books¶
- Reference book. Leonard Richardson, Mike Amundsen & Sam Ruby. RESTful Web APIs. O'Reilly Media 2013. ISBN: 978-1-4493-5806-8. The book is available as an eBook in the University of Oulu library
- Leonard Richardson & Sam Ruby,RESTful Web Services. O’Reilly Media 2007. ISBN: 978-0-596-52926-0. Available at http://restfulwebapis.org/rws.html
Extra Books¶
- Subbu Allamaraju. RESTful Web Services Cookbook. O'Reilly 2010. ISBN: 978-0-596-80168-7
- Jim Webber, Savas Parastatidis & Ian Robinson. REST in Practice. O’Reilly Media 2010. ISBN: 978-0-596-80582-1
Additional material: If you want to learn more regarding some topicsRESTFul and ROA theory¶
- Leonard Richardson & Sam Ruby,RESTful Web Services. O’Reilly Media 2007. ISBN: 978-0-596-52926-0. Available at http://restfulwebapis.org/rws.html
- Guide from Zalando on how to create RESTful Web APIs. Thanks to Henri Koski, former student, to share the link with us.
- NORDIC APIs: https://nordicapis.com/
- API Developer Weekly: https://apideveloperweekly.com/
- Some RESTful Advanced Concepts such as authentication, transactions, batch operations can be found from the PDF below.
HypermediaHypermedia and RESTful¶
Designing Hypermedia API (Steve Klabnik)
Hypermedia formats (Chapter 10 of RESTful Web APIs). This provides a comprehensive summary of the hypermedia formats that you can use in your for project work.
Useful links:
- Ammundsen lecture about RESTful and Hypermedia. A MUST SEE: https://www.youtube.com/watch?v=UkAt9XSOfaE . Related presentation by same author: http://amundsen.com/talks/2015-04-codepalousa/gap-slides.pdf
- NARWHL: A theorethical framework to develop RESTful APIs. Set of recommendations that you can follow to build your RESTful API. A different approach to the recommendations we give in Lecture 2 to design a RESTful Web API.
- How to choose adequate JSON hypermedia? . Kind of simple tutorial describing the main Hypermedia that you can use in your project work. You can check also this link.
- Fielding's vision on hypermedia and REST.
- Best practices for hypermedia
Advantages of hypermedia¶
- http://soabits.blogspot.dk/2013/12/selling-benefits-of-hypermedia.html
- https://blogs.mulesoft.com/dev/api-dev/api-best-practices-series-plan/
- http://www.programmableweb.com/news/hypermedia-apis-benefits-hateoas/how-to/2014/02/27
- http://www.infoq.com/articles/roy-fielding-on-versioning
- Some simple examples:
Against hypermedia¶
Commercial applications using hypermedia¶
- Paypal is promoting the use of Hypermedia in their REST API:
- https://developer.paypal.com/docs/api/overview/
- https://developer.paypal.com/docs/integration/direct/paypal-rest-payment-hateoas-links/
- Amazon AppStream:http://docs.aws.amazon.com/appstream/latest/developerguide/api-reference.html
- Foxycart: https://api.foxycart.com/docs#
- Skype for business: https://msdn.microsoft.com/en-us/skype/ucwa/hypermedia
- More examples: More: http://apievangelist.com/2014/04/15/what-are-some-good-examples-of-hypermedia-apis/
Web Frameworks and for RESTful ServicesFlask¶
Flask is the HTTP microfamework we are using in the course exercises:
- Official documentation: http://flask.pocoo.org/docs/1.0/
- Book: Flask Web Development. Miguel Grinberg has a really good book about Flask. The link to its webpage: http://flaskbook.com/. Unfortunately, we do not have copies of the book at the library yet. You can check also his Flask Mega Tutorial. Specially it worth to check:
Django¶
Django is one of the best web frameworks for Python. It's also the web framework used by Lovelace.
- You can find a great tutorial in its webpage: https://docs.djangoproject.com/en/2.0/contents/
- We used in the past a great plugin to implement RESTful Web APIs in Django. You can find it at: http://www.django-rest-framework.org/
- Presentation about RESTful Web APIs using Django and Django-REST-framework (Updated in February 2013):
NodeJS¶
Node is web based framework for server side applications running on Javascript
Frameworks for RESTful ClientsReact¶
- Old tutorial: https://lostechies.com/jimmybogard/2015/07/01/end-to-end-hypermedia-building-a-react-client/
NodeJs¶
- Good library that follows hypermedia principles: https://github.com/traverson/traverson
Programming Courses and material¶
If you need to learn the basics of Python, Javascript, Jquery or HTML/CSS you can check the courses at http://www.codecademy.com/
Python¶
There is plenty of material available in the net and several books available at the library. However, we just recommend you the following material:
- Python book for beginners:https://automatetheboringstuff.com/
- Python tutorial (https://docs.python.org/3/tutorial/) chapters 1 -5, 8,9.
- Elementary programming course introduction to Python: https://lovelace.oulu.fi/ohjelmoinnin-alkeet/ohjelmoinnin-alkeet/.
Javascript¶
Some good references to learn javascript:
- "Javascript, the good parts" by Douglas Crockford. In my opinion one of the best books about javascript. Short, concise and clear. There is one copy in the library.
- "Eloquent Javascript". For this course you just need the Part 1 of the book.
- "You do not know javascript"→ More advanced concepts of Javascript
Git¶
If you have not worked with any version control system in general or Git in particular it is mandatory that you have a look to the following links:
Other documentation that you can consult:
Really nice visual tool to learn basic concepts at: http://onlywei.github.io/explain-git-with-d3/
Cloud applications platforms¶
You can deploy your server in the following cloud platforms.
For MongoDB you can use the following platforms: