You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2020/08/03 21:01:54 UTC

[GitHub] [airflow-site] kaxil commented on a change in pull request #274: Implementing stable REST API for Apache Airflow

kaxil commented on a change in pull request #274:
URL: https://github.com/apache/airflow-site/pull/274#discussion_r464659923



##########
File path: landing-pages/site/content/en/blog/implementing-stable-API-for-Apache-Airflow.md
##########
@@ -0,0 +1,92 @@
+---
+title: "Implementing Stable API for Apache Airflow"
+linkTitle: "Implementing Stable API for Apache Airflow"
+author: "Ephraim Anierobi"
+twitter: "ephraimbuddy"
+github: "ephraimbuddy"
+description: "An Outreachy intern's progress report on contributing to Apache Airflow REST API."
+tags: ["REST API"]
+date: "2020-07-19"
+---
+
+My [Outreachy internship](https://outreachy.org) is coming to its ends which is also the best time to look back and
+reflect on the progress so far.
+
+The goal of my project is to Extend and Improve the Apache Airflow REST API. In this post,
+I will be sharing my progress so far.
+
+We started a bit late implementing the REST API because it took time for the OpenAPI 3.0
+specification we were to use for the project to be merged. Thanks to [Kamil](https://github.com/mik-laj),
+who paved the way for us to start implementing the REST API endpoints. Below are the endpoints I
+implemented and the challenges I encountered, including how I overcame them.
+
+### Implementing The Read-Only Connection Endpoints
+The [read-only connection endpoints](https://github.com/apache/airflow/pull/9095) were the first endpoint I implemented. Looking back,
+I can see how much I have improved.
+
+I started by implementing the database schema for the Connection table using [Marshmallow 2](https://marshmallow.readthedocs.io/en/2.x-line/).
+We had to use Marshmallow 2 because Flask-AppBuilder was still using it and Flask-AppBuilder
+is deeply integrated to Apache Airflow. This meant I had to unlearn Marshmallow 3 that I had
+ been studying before this realization, but thankfully, [Marshmallow 3](https://marshmallow.readthedocs.io/en/stable/index.html) isn't too
+ different, so I was able to start using Marshmallow 2 in no time.
+
+This first PR would have been more difficult than it was unless there had been any reference
+endpoint to look at. [Kamil](https://github.com/mik-laj) implemented a [draft PR](https://github.com/apache/airflow/pull/9045) in which I took inspiration from.
+Thanks to this, It was easy for me to write the unit tests. It was also in this endpoint that
+ I learned using [parameterized](https://github.com/wolever/parameterized) in unit tests :D.
+
+### Implementing The Read-Only DagRuns Endpoints
+
+This [endpoint](https://github.com/apache/airflow/pull/9153) came with its many challenges, especially on filtering with `datetimes`.
+This was because the ``connexion`` library we were using to build the REST API was not validating

Review comment:
       ```suggestion
   This was because the `connexion` library we were using to build the REST API was not validating
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org