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).
Deadline 3: API Implementation¶
For this deadline you need to present your API implementation. The design and your decisions need to be documented in the project wiki as instructed in the template. You also need to have your API code in the repository. During the meeting you also need to demonstrate that your API works via a method of your choosing, and also show the coverage report of your running your tests. These demonstrations will be done via screen share from your end.
Evaluation Criteria¶
| points | details | ||
|---|---|---|---|
| 1. Wiki Report | 6.0 | ||
![]() |
Resource Table | 1.0 | The resource table exists and clearly shows what URIs are available in the API and what methods each of them support. |
![]() |
Addressability | 1.5 | The justification shows through examples how addressability is achieved in the API. The API implementation is fully addressable.The hierarchy of resources is consistent. |
![]() |
Uniform Interface | 1.5 | The description explains how each HTTP method is used in the API, through examples. The API designs and implements uniform interface correctly, using methods adequately. |
![]() |
Statelesness | 1.0 | The description shows that the writer understands what is server side state, and explains how the API achieves statelesness. The API implementation doesn't have server side state. |
![]() |
Connectedness | 1.0 | Explain with examples from your API how your API is connected. |
| 2. Basic Implementation | 10.0 | ||
![]() |
Project Structure | 2.0 | The project repository has good structure as recommended in the exercises. Single file applications will not fulfill this criteria. If you use a different framework than the one proposed in the course, you need to provide some information on good practices for the framework you are using (e.g link to documentation material). |
![]() |
Code Quality | 1.0 | The code follows rules for idiomatic Python. This includes passing PyLint with a score of 9 or higher, and there should be grounds for ignoring its corrections. This will be scored very strictly.If you are not using Python, you must use an equivalent linting tool and showing the result. Without linting tool you cannot get any points. |
![]() |
Documentation | 1.0 | The code is documented where necessary. Sources for borrowed code are clearly marked, with a link to the source. Use of AI is clearly indicated (including which tool and prompts were used). This includes any examples taken directly from the course material. |
![]() |
Instructions | 1.0 | The project root contains a README with full instructions on how to install and deploy the API. Instructions also show how to run the tests. |
![]() |
Test Coverage | 3.0 | Test coverage in relevant files is 96% or higher for 3p, 91-95% for 2p, 85-90% for 1p. |
![]() |
Implementation Works | 2.0 | The implementation works, as shown mainly by tests and the reviewer doesn't find any problems in the code. If the coverage is not large enough, working implementation is done through demonstration. In that case, students can get only 1.0. at maximum. In any case, if the reviewer can ask for additional tests, and if they failed grade can be reduced. |
| 3. Extras | 5.0 | ||
![]() |
URL Converters | 1.0 | The API uses at least one URL converter, and the (lack of) use of converters is justified for each URL variable in the code. |
![]() |
Schema Validation | 1.0 | The API uses JSON schema validation to validate incoming requests. Decisions for choosing types and formats are justified in the text. |
![]() |
Caching | 1.5 | The API uses caching where relevant, in at least one GET method. The decisions regarding caching for each GET method are justified in the text. Cache invalidation is also explained in the text. |
![]() |
Authentication | 1.5 | The API uses authentication for at least one resource. The (lack of) use of authentication is justified for each resource and method. |
Code Quality¶
The quality of the code must be demonstrated using a lint tool. Not using the lint tool will reduce the points. When running PyLint for your code the following three warnings will be ignored in scoring:
no-member import-outside-toplevel no-self-use
Return Box¶
To submit the deliverable, put a link to your repository or deadline 3 wiki page in the box.
Hints
Messages
